| Class | Sequel::JDBC::H2::Dataset |
| In: |
lib/sequel/adapters/jdbc/h2.rb
|
| Parent: | JDBC::Dataset |
| SELECT_CLAUSE_METHODS | = | clause_methods(:select, %w'select distinct columns from join where group having compounds order limit') |
| BITWISE_METHOD_MAP | = | {:& =>:BITAND, :| => :BITOR, :^ => :BITXOR} |
| APOS | = | Dataset::APOS |
| HSTAR | = | "H*".freeze |
| BITCOMP_OPEN | = | "((0 - ".freeze |
| BITCOMP_CLOSE | = | ") - 1)".freeze |
| ILIKE_PLACEHOLDER | = | "CAST(? AS VARCHAR_IGNORECASE)".freeze |
| TIME_FORMAT | = | "'%H:%M:%S'".freeze |
| H2_CLOB_METHOD | = | TYPE_TRANSLATOR_INSTANCE.method(:h2_clob) |
Emulate the case insensitive LIKE operator and the bitwise operators.
# File lib/sequel/adapters/jdbc/h2.rb, line 122
122: def complex_expression_sql_append(sql, op, args)
123: case op
124: when :ILIKE, "NOT ILIKE""NOT ILIKE"
125: super(sql, (op == :ILIKE ? :LIKE : "NOT LIKE""NOT LIKE"), [SQL::PlaceholderLiteralString.new(ILIKE_PLACEHOLDER, [args.at(0)]), args.at(1)])
126: when :&, :|, :^
127: sql << complex_expression_arg_pairs(args){|a, b| literal(SQL::Function.new(BITWISE_METHOD_MAP[op], a, b))}
128: when :<<
129: sql << complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} * POWER(2, #{literal(b)}))"}
130: when :>>
131: sql << complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} / POWER(2, #{literal(b)}))"}
132: when 'B~''B~'
133: sql << BITCOMP_OPEN
134: literal_append(sql, args.at(0))
135: sql << BITCOMP_CLOSE
136: else
137: super
138: end
139: end