class Sequel::JDBC::HSQLDB::Dataset
Constants
- APOS
- BLOB_OPEN
- BOOL_FALSE
- BOOL_TRUE
- DEFAULT_FROM
- HSTAR
- SQL_WITH_RECURSIVE
- TIME_FORMAT
Public Instance Methods
Handle HSQLDB specific case insensitive LIKE and bitwise operator support.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 153 def complex_expression_sql_append(sql, op, args) case op when :ILIKE, :"NOT ILIKE" super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), args.map{|v| SQL::Function.new(:ucase, v)}) when :&, :|, :^, :%, :<<, :>>, :'B~' complex_expression_emulate_append(sql, op, args) else super end end
HSQLDB requires recursive CTEs to have column aliases.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 165 def recursive_cte_requires_column_aliases? true end
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, line 179 def supports_cte?(type=:select) false end
HSQLDB does not support IS TRUE.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 184 def supports_is_true? false end
HSQLDB supports lateral subqueries.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 189 def supports_lateral_subqueries? true end
Private Instance Methods
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 195 def empty_from_sql DEFAULT_FROM end
Use string in hex format for blob data.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 200 def literal_blob_append(sql, v) sql << BLOB_OPEN << v.unpack(HSTAR).first << APOS end
HSQLDB uses FALSE for false values.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 205 def literal_false BOOL_FALSE end
HSQLDB handles fractional seconds in timestamps, but not in times
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 210 def literal_sqltime(v) v.strftime(TIME_FORMAT) end
HSQLDB uses TRUE for true values.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 215 def literal_true BOOL_TRUE end
HSQLDB supports multiple rows in INSERT.
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 220 def multi_insert_sql_strategy :values end
Use WITH RECURSIVE instead of WITH if any of the CTEs is recursive
# File lib/sequel/adapters/jdbc/hsqldb.rb, line 225 def select_with_sql_base opts[:with].any?{|w| w[:recursive]} ? SQL_WITH_RECURSIVE : super end