class Sequel::JDBC::HSQLDB::Dataset
Public Instance Methods
Handle HSQLDB
specific case insensitive LIKE and bitwise operator support.
Sequel::Dataset#complex_expression_sql_append
# 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
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
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
HSQLDB
does not support IS TRUE.
# File lib/sequel/adapters/jdbc/hsqldb.rb 173 def supports_is_true? 174 false 175 end
HSQLDB
supports lateral subqueries.
# File lib/sequel/adapters/jdbc/hsqldb.rb 178 def supports_lateral_subqueries? 179 true 180 end
Private Instance Methods
# File lib/sequel/adapters/jdbc/hsqldb.rb 184 def empty_from_sql 185 " FROM (VALUES (0))" 186 end
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
HSQLDB
uses FALSE for false values.
# File lib/sequel/adapters/jdbc/hsqldb.rb 194 def literal_false 195 'FALSE' 196 end
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
HSQLDB
uses TRUE for true values.
# File lib/sequel/adapters/jdbc/hsqldb.rb 204 def literal_true 205 'TRUE' 206 end
HSQLDB
supports multiple rows in INSERT.
# File lib/sequel/adapters/jdbc/hsqldb.rb 209 def multi_insert_sql_strategy 210 :values 211 end
Use WITH RECURSIVE instead of WITH if any of the CTEs is recursive
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