class Sequel::JDBC::HSQLDB::Dataset

Dataset class for HSQLDB datasets accessed via JDBC.

def complex_expression_sql_append(sql, op, args)

Handle HSQLDB specific case insensitive LIKE and bitwise operator support.
def complex_expression_sql_append(sql, op, args)
  case op
  when :ILIKE, :"NOT ILIKE"
    super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), [SQL::Function.new(:ucase, args.at(0)), SQL::Function.new(:ucase, args.at(1)) ])
  when :&, :|, :^
    op = BITWISE_METHOD_MAP[op]
    sql << complex_expression_arg_pairs(args){|a, b| literal(SQL::Function.new(op, a, b))}
  when :<<
    sql << complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} * POWER(2, #{literal(b)}))"}
  when :>>
    sql << complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} / POWER(2, #{literal(b)}))"}
  when :'B~'
    sql << BITCOMP_OPEN
    literal_append(sql, args.at(0))
    sql << BITCOMP_CLOSE
  else
    super
  end
end

def literal_blob_append(sql, v)

Use string in hex format for blob data.
def literal_blob_append(sql, v)
  sql << BLOB_OPEN << v.unpack(HSTAR).first << APOS
end

def literal_false

HSQLDB uses FALSE for false values.
def literal_false
  BOOL_FALSE
end

def literal_sqltime(v)

HSQLDB handles fractional seconds in timestamps, but not in times
def literal_sqltime(v)
  v.strftime(TIME_FORMAT)
end

def literal_true

HSQLDB uses TRUE for true values.
def literal_true
  BOOL_TRUE
end

def recursive_cte_requires_column_aliases?

HSQLDB requires recursive CTEs to have column aliases.
def recursive_cte_requires_column_aliases?
  true
end

def select_clause_methods

HSQLDB does not support CTEs well enough for Sequel to enable support for them.
def select_clause_methods
  SELECT_CLAUSE_METHODS
end

def select_from_sql(sql)

Use a default FROM table if the dataset does not contain a FROM table.
def select_from_sql(sql)
  if @opts[:from]
    super
  else
    sql << DEFAULT_FROM
  end
end

def select_with_sql_base

Use WITH RECURSIVE instead of WITH if any of the CTEs is recursive
def select_with_sql_base
  opts[:with].any?{|w| w[:recursive]} ? SQL_WITH_RECURSIVE : super
end

def supports_is_true?

HSQLDB does not support IS TRUE.
def supports_is_true?
  false
end