class Sequel::JDBC::HSQLDB::Dataset

Public Instance Methods

complex_expression_sql_append(sql, op, args) click to toggle source

Handle HSQLDB specific case insensitive LIKE and bitwise operator support.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
142 def complex_expression_sql_append(sql, op, args)
143   case op
144   when :ILIKE, :"NOT ILIKE"
145     super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), args.map{|v| SQL::Function.new(:ucase, v)})
146   when :&, :|, :^, :%, :<<, :>>, :'B~'
147     complex_expression_emulate_append(sql, op, args)
148   else
149     super
150   end
151 end
recursive_cte_requires_column_aliases?() click to toggle source

HSQLDB requires recursive CTEs to have column aliases.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
154 def recursive_cte_requires_column_aliases?
155   true
156 end
requires_sql_standard_datetimes?() click to toggle source

HSQLDB requires SQL standard datetimes in some places.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
159 def requires_sql_standard_datetimes?
160   true
161 end
supports_cte?(type=:select) click to toggle source

HSQLDB does support common table expressions, but the support is broken. CTEs operate more like temprorary tables or views, lasting longer than the duration of the expression. CTEs in earlier queries might take precedence over CTEs with the same name in later queries. Also, if any CTE is recursive, all CTEs must be recursive. If you want to use CTEs with HSQLDB, you'll have to manually modify the dataset to allow it.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
168 def supports_cte?(type=:select)
169   false
170 end
supports_is_true?() click to toggle source

HSQLDB does not support IS TRUE.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
173 def supports_is_true?
174   false
175 end
supports_lateral_subqueries?() click to toggle source

HSQLDB supports lateral subqueries.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
178 def supports_lateral_subqueries?
179   true
180 end

Private Instance Methods

empty_from_sql() click to toggle source
    # File lib/sequel/adapters/jdbc/hsqldb.rb
184 def empty_from_sql
185   " FROM (VALUES (0))"
186 end
literal_blob_append(sql, v) click to toggle source

Use string in hex format for blob data.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
189 def literal_blob_append(sql, v)
190   sql << "X'" << v.unpack("H*").first << "'"
191 end
literal_false() click to toggle source

HSQLDB uses FALSE for false values.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
194 def literal_false
195   'FALSE'
196 end
literal_sqltime(v) click to toggle source

HSQLDB handles fractional seconds in timestamps, but not in times

    # File lib/sequel/adapters/jdbc/hsqldb.rb
199 def literal_sqltime(v)
200   v.strftime("'%H:%M:%S'")
201 end
literal_true() click to toggle source

HSQLDB uses TRUE for true values.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
204 def literal_true
205   'TRUE'
206 end
multi_insert_sql_strategy() click to toggle source

HSQLDB supports multiple rows in INSERT.

    # File lib/sequel/adapters/jdbc/hsqldb.rb
209 def multi_insert_sql_strategy
210   :values
211 end
select_with_sql_base() click to toggle source

Use WITH RECURSIVE instead of WITH if any of the CTEs is recursive

Calls superclass method Sequel::Dataset#select_with_sql_base
    # File lib/sequel/adapters/jdbc/hsqldb.rb
214 def select_with_sql_base
215   opts[:with].any?{|w| w[:recursive]} ? "WITH RECURSIVE " : super
216 end