Class: Sequel::JDBC::HSQLDB::Dataset

Inherits:
Dataset show all
Defined in:
lib/sequel/adapters/jdbc/hsqldb.rb

Overview

Dataset class for HSQLDB datasets accessed via JDBC.

Constant Summary collapse

BITWISE_METHOD_MAP =
{:& =>:BITAND, :| => :BITOR, :^ => :BITXOR}
BOOL_TRUE =
'TRUE'.freeze
BOOL_FALSE =
'FALSE'.freeze
SELECT_CLAUSE_METHODS =

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.

clause_methods(:select, %w'distinct columns from join where group having compounds order limit lock')
SQL_WITH_RECURSIVE =
"WITH RECURSIVE ".freeze

Constants inherited from Dataset

Dataset::ACTION_METHODS, Dataset::AND_SEPARATOR, Dataset::ARG_BLOCK_ERROR_MSG, Dataset::ARRAY_ACCESS_ERROR_MSG, Dataset::COLUMN_CHANGE_OPTS, Dataset::COLUMN_REF_RE1, Dataset::COLUMN_REF_RE2, Dataset::COLUMN_REF_RE3, Dataset::COMMA_SEPARATOR, Dataset::CONDITIONED_JOIN_TYPES, Dataset::COUNT_FROM_SELF_OPTS, Dataset::COUNT_OF_ALL_AS_COUNT, Dataset::DATASET_ALIAS_BASE_NAME, Dataset::DELETE_CLAUSE_METHODS, Dataset::FOR_UPDATE, Dataset::IMPORT_ERROR_MSG, Dataset::INSERT_CLAUSE_METHODS, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::JOIN_METHODS, Dataset::MUTATION_METHODS, Dataset::NON_SQL_OPTIONS, Dataset::NOTIMPL_MSG, Dataset::NULL, Dataset::N_ARITY_OPERATORS, Dataset::PREPARED_ARG_PLACEHOLDER, Dataset::QUALIFY_KEYS, Dataset::QUERY_METHODS, Dataset::QUESTION_MARK, Dataset::SQL_WITH, Dataset::STANDARD_TIMESTAMP_FORMAT, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, Dataset::UNCONDITIONED_JOIN_TYPES, Dataset::UPDATE_CLAUSE_METHODS, Dataset::WILDCARD

Instance Attribute Summary

Attributes inherited from Dataset

#convert_types

Attributes inherited from Dataset

#db, #identifier_input_method, #identifier_output_method, #opts, #quote_identifiers, #row_proc

Instance Method Summary collapse

Methods inherited from Dataset

#fetch_rows, #initialize, #prepare

Methods inherited from Dataset

#<<, #==, #[], #[]=, #add_graph_aliases, #aliased_expression_sql, #all, #and, #array_sql, #avg, #bind, #boolean_constant_sql, #call, #case_expression_sql, #cast_sql, clause_methods, #clone, #column_all_sql, #columns, #columns!, #constant_sql, #count, def_mutation_method, #def_mutation_method, #delete, #delete_sql, #distinct, #each, #each_page, #each_server, #empty?, #eql?, #except, #exclude, #exclude_having, #exclude_where, #exists, #fetch_rows, #filter, #first, #first_source, #first_source_alias, #first_source_table, #for_update, #from, #from_self, #function_sql, #get, #graph, #grep, #group, #group_and_count, #group_by, #hash, #having, #import, #initialize, #insert, #insert_multiple, #insert_sql, #inspect, #intersect, #interval, introspect_all_columns, #invert, #join, #join_clause_sql, #join_on_clause_sql, #join_table, #join_using_clause_sql, #last, #limit, #literal, #lock_style, #map, #max, #min, #multi_insert, #multi_insert_sql, #naked, #negative_boolean_constant_sql, #or, #order, #order_append, #order_by, #order_more, #order_prepend, #ordered_expression_sql, #paginate, #placeholder_literal_string_sql, #prepare, #print, #provides_accurate_rows_matched?, #qualified_identifier_sql, #qualify, #qualify_to, #qualify_to_first_source, #query, #quote_identifier, #quote_identifiers?, #quote_schema_table, #quoted_identifier, #range, #requires_placeholder_type_specifiers?, #requires_sql_standard_datetimes?, #returning, #reverse, #reverse_order, #row_number_column, #schema_and_table, #select, #select_all, #select_append, #select_group, #select_hash, #select_map, #select_more, #select_order_map, #select_sql, #server, #set, #set_defaults, #set_graph_aliases, #set_overrides, #single_record, #single_value, #split_alias, #sql, #subscript_sql, #sum, #supports_cte?, #supports_cte_in_subqueries?, #supports_distinct_on?, #supports_insert_select?, #supports_intersect_except?, #supports_intersect_except_all?, #supports_join_using?, #supports_modifying_joins?, #supports_multiple_column_in?, #supports_ordered_distinct_on?, #supports_returning?, #supports_select_all_and_column?, #supports_timestamp_timezones?, #supports_timestamp_usecs?, #supports_where_true?, #supports_window_functions?, #to_csv, #to_dot, #to_hash, #truncate, #truncate_sql, #unbind, #unfiltered, #ungraphed, #ungrouped, #union, #unlimited, #unordered, #unused_table_alias, #update, #update_sql, #where, #window_function_sql, #window_sql, #with, #with_recursive, #with_sql

Methods included from Metaprogramming

#meta_def

Methods included from SQL::StringMethods

#ilike, #like

Methods included from SQL::OrderMethods

#asc, #desc

Methods included from SQL::NumericMethods

#+

Methods included from SQL::ComplexExpressionMethods

#extract, #sql_boolean, #sql_number, #sql_string

Methods included from SQL::CastMethods

#cast, #cast_numeric, #cast_string

Methods included from SQL::BooleanMethods

#~

Methods included from SQL::AliasMethods

#as

Constructor Details

This class inherits a constructor from Sequel::JDBC::Dataset

Instance Method Details

#complex_expression_sql(op, args) ⇒ Object

Handle HSQLDB specific case insensitive LIKE and bitwise operator support.



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/sequel/adapters/jdbc/hsqldb.rb', line 90

def complex_expression_sql(op, args)
  case op
  when :ILIKE
    super(:LIKE, [SQL::Function.new(:ucase, args.at(0)), SQL::Function.new(:ucase, args.at(1)) ])
  when :"NOT ILIKE"
    super(:"NOT LIKE", [SQL::Function.new(:ucase, args.at(0)), SQL::Function.new(:ucase, args.at(1)) ])
  when :&, :|, :^
    op = BITWISE_METHOD_MAP[op]
    complex_expression_arg_pairs(args){|a, b| literal(SQL::Function.new(op, a, b))}
  when :<<
    complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} * POWER(2, #{literal(b)}))"}
  when :>>
    complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} / POWER(2, #{literal(b)}))"}
  when :'B~'
    "((0 - #{literal(args.at(0))}) - 1)"
  else
    super
  end
end

#recursive_cte_requires_column_aliases?Boolean

HSQLDB requires recursive CTEs to have column aliases.

Returns:

  • (Boolean)


111
112
113
# File 'lib/sequel/adapters/jdbc/hsqldb.rb', line 111

def recursive_cte_requires_column_aliases?
  true
end

#supports_is_true?Boolean

HSQLDB does not support IS TRUE.

Returns:

  • (Boolean)


116
117
118
# File 'lib/sequel/adapters/jdbc/hsqldb.rb', line 116

def supports_is_true?
  false
end