Class: Sequel::SQL::Function
- Inherits:
- 
      GenericExpression
      
        - Object
- Expression
- GenericExpression
- Sequel::SQL::Function
 
- Defined in:
- lib/sequel/sql.rb,
 lib/sequel/extensions/eval_inspect.rb
Overview
Represents an SQL function call.
Constant Summary collapse
- WILDCARD =
- LiteralString.new('*').freeze 
- DISTINCT =
- ["DISTINCT ".freeze].freeze 
- COMMA_ARRAY =
- [LiteralString.new(', ').freeze].freeze 
Instance Attribute Summary collapse
- 
  
    
      #args  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    The array of arguments to pass to the function (may be blank). 
- 
  
    
      #name  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    The SQL function to call. 
- 
  
    
      #opts  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Options for this function. 
Class Method Summary collapse
- 
  
    
      .new!(name, args, opts)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Set the name, args, and options, for internal use only. 
Instance Method Summary collapse
- 
  
    
      #*(ce = (arg=false;nil))  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    If no arguments are given, return a new function with the wildcard prepended to the arguments. 
- 
  
    
      #distinct  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function with DISTINCT before the method arguments. 
- 
  
    
      #filter(*args, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function with FILTER added to it, for filtered aggregate functions:. 
- 
  
    
      #initialize(name, *args)  ⇒ Function 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Set the name and args for the function. 
- 
  
    
      #lateral  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a function which will use LATERAL when literalized:. 
- 
  
    
      #order(*args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function where the function will be ordered. 
- 
  
    
      #over(window = OPTS)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function with an OVER clause (making it a window function). 
- 
  
    
      #quoted  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function where the function name will be quoted if the database supports quoted functions:. 
- 
  
    
      #unquoted  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function where the function name will not be quoted even if the database supports quoted functions:. 
- 
  
    
      #with_ordinality  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function that will use WITH ORDINALITY to also return a row number for every row the function returns:. 
- 
  
    
      #within_group(*expressions)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a new function that uses WITHIN GROUP ordered by the given expression, useful for ordered-set and hypothetical-set aggregate functions:. 
Methods included from IsDistinctFrom::Methods
Methods included from Sequel::SQLite::JSONOpMethods
#sqlite_json_op, #sqlite_jsonb_op
Methods included from Postgres::HStoreOpMethods
Methods included from Postgres::RangeOpMethods
Methods included from Postgres::ArrayOpMethods
Methods included from Postgres::JSONOpMethods
Methods included from Postgres::InetOpMethods
Methods included from Postgres::PGRowOp::ExpressionMethods
Methods included from SubscriptMethods
Methods included from StringMethods
#escaped_ilike, #escaped_like, #ilike, #like
Methods included from PatternMatchMethods
Methods included from OrderMethods
Methods included from NumericMethods
Methods included from ComplexExpressionMethods
#extract, #sql_boolean, #sql_number, #sql_string
Methods included from CastMethods
#cast, #cast_numeric, #cast_string
Methods included from BooleanMethods
Methods included from AliasMethods
Methods inherited from Expression
#==, attr_reader, #clone, #eql?, #hash, inherited, #inspect
Constructor Details
Instance Attribute Details
#args ⇒ Object (readonly)
The array of arguments to pass to the function (may be blank)
| 1379 1380 1381 | # File 'lib/sequel/sql.rb', line 1379 def args @args end | 
#name ⇒ Object (readonly)
The SQL function to call
| 1376 1377 1378 | # File 'lib/sequel/sql.rb', line 1376 def name @name end | 
#opts ⇒ Object (readonly)
Options for this function
| 1382 1383 1384 | # File 'lib/sequel/sql.rb', line 1382 def opts @opts end | 
Class Method Details
.new!(name, args, opts) ⇒ Object
Set the name, args, and options, for internal use only.
| 1390 1391 1392 | # File 'lib/sequel/sql.rb', line 1390 def self.new!(name, args, opts) # :nodoc: allocate.send(:_initialize, name, args, opts) end | 
Instance Method Details
#*(ce = (arg=false;nil)) ⇒ Object
| 1397 1398 1399 1400 1401 1402 1403 1404 | # File 'lib/sequel/sql.rb', line 1397 def *(ce=(arg=false;nil)) if arg == false raise Error, "Cannot apply * to functions with arguments" unless args.empty? with_opts(:"*"=>true) else super(ce) end end | 
#distinct ⇒ Object
| 1409 1410 1411 | # File 'lib/sequel/sql.rb', line 1409 def distinct with_opts(:distinct=>true) end | 
#filter(*args, &block) ⇒ Object
| 1417 1418 1419 1420 1421 1422 1423 1424 1425 | # File 'lib/sequel/sql.rb', line 1417 def filter(*args, &block) if args.length == 1 args = args.first else args.freeze end with_opts(:filter=>args, :filter_block=>block) end | 
#lateral ⇒ Object
| 1430 1431 1432 | # File 'lib/sequel/sql.rb', line 1430 def lateral with_opts(:lateral=>true) end | 
#order(*args) ⇒ Object
| 1438 1439 1440 | # File 'lib/sequel/sql.rb', line 1438 def order(*args) with_opts(:order=>args.freeze) end | 
#over(window = OPTS) ⇒ Object
| 1446 1447 1448 1449 1450 | # File 'lib/sequel/sql.rb', line 1446 def over(window=OPTS) raise Error, "function already has a window applied to it" if opts[:over] window = Window.new(window) unless window.is_a?(Window) with_opts(:over=>window) end | 
#quoted ⇒ Object
| 1456 1457 1458 | # File 'lib/sequel/sql.rb', line 1456 def quoted with_opts(:quoted=>true) end | 
#unquoted ⇒ Object
Return a new function where the function name will not be quoted even if the database supports quoted functions:
Sequel[:foo][:bar].function.unquoted # foo.bar()
| 1464 1465 1466 | # File 'lib/sequel/sql.rb', line 1464 def unquoted with_opts(:quoted=>false) end | 
#with_ordinality ⇒ Object
| 1472 1473 1474 | # File 'lib/sequel/sql.rb', line 1472 def with_ordinality with_opts(:with_ordinality=>true) end | 
#within_group(*expressions) ⇒ Object
| 1481 1482 1483 | # File 'lib/sequel/sql.rb', line 1481 def within_group(*expressions) with_opts(:within_group=>expressions.freeze) end |