class Sequel::JDBC::HSQLDB::Dataset
def complex_expression_sql_append(sql, op, args)
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
def empty_from_sql
def empty_from_sql " FROM (VALUES (0))" end
def literal_blob_append(sql, v)
def literal_blob_append(sql, v) sql << "X'" << v.unpack("H*").first << "'" end
def literal_false
def literal_false 'FALSE' end
def literal_sqltime(v)
def literal_sqltime(v) v.strftime("'%H:%M:%S'") end
def literal_true
def literal_true 'TRUE' end
def multi_insert_sql_strategy
def multi_insert_sql_strategy :values end
def recursive_cte_requires_column_aliases?
def recursive_cte_requires_column_aliases? true end
def requires_sql_standard_datetimes?
def requires_sql_standard_datetimes? true end
def select_with_sql_base
def select_with_sql_base opts[:with].any?{|w| w[:recursive]} ? "WITH RECURSIVE " : super end
def supports_cte?(type=:select)
Also, if any CTE is recursive, all CTEs must be recursive.
CTEs in earlier queries might take precedence over CTEs with the same name in later queries.
CTEs operate more like temprorary tables or views, lasting longer than the duration of the expression.
HSQLDB does support common table expressions, but the support is broken.
def supports_cte?(type=:select) false end
def supports_is_true?
def supports_is_true? false end
def supports_lateral_subqueries?
def supports_lateral_subqueries? true end
def supports_merge?
HSQLDB 2.3.4+ supports MERGE. Older versions also support MERGE, but not all
def supports_merge? db.db_version >= 20304 end