class Sequel::JDBC::H2::Dataset

Dataset class for H2 datasets accessed via JDBC.

def complex_expression_sql_append(sql, op, args)

Emulate the case insensitive LIKE operator and the bitwise operators.
def complex_expression_sql_append(sql, op, args)
  case op
  when :ILIKE, :"NOT ILIKE"
    super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), [SQL::PlaceholderLiteralString.new(ILIKE_PLACEHOLDER, [args.at(0)]), args.at(1)])
  when :&, :|, :^
    sql << complex_expression_arg_pairs(args){|a, b| literal(SQL::Function.new(BITWISE_METHOD_MAP[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 convert_type_proc(v)

Handle H2 specific clobs as strings.
def convert_type_proc(v)
  if v.is_a?(Java::OrgH2Jdbc::JdbcClob)
    H2_CLOB_METHOD
  else
    super
  end
end

def literal_blob_append(sql, v)

H2 expects hexadecimal strings for blob values
def literal_blob_append(sql, v)
  sql << APOS << v.unpack(HSTAR).first << APOS
end

def literal_sqltime(v)

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

def requires_sql_standard_datetimes?

H2 requires SQL standard datetimes
def requires_sql_standard_datetimes?
  true
end

def select_clause_methods

def select_clause_methods
  SELECT_CLAUSE_METHODS
end

def supports_is_true?

H2 doesn't support IS TRUE
def supports_is_true?
  false
end

def supports_join_using?

H2 doesn't support JOIN USING
def supports_join_using?
  false
end

def supports_multiple_column_in?

H2 doesn't support multiple columns in IN/NOT IN
def supports_multiple_column_in?
  false
end