Class: Sequel::JDBC::Derby::Dataset

Inherits:
Sequel::JDBC::Dataset show all
Defined in:
lib/sequel/adapters/jdbc/derby.rb

Overview

Dataset class for Derby datasets accessed via JDBC.

Constant Summary collapse

PAREN_CLOSE =
Dataset::PAREN_CLOSE
PAREN_OPEN =
Dataset::PAREN_OPEN
OFFSET =
Dataset::OFFSET
CAST_STRING_OPEN =
"RTRIM(".freeze
BITCOMP_OPEN =
"((0 - ".freeze
BITCOMP_CLOSE =
") - 1)".freeze
BLOB_OPEN =
"CAST(X'".freeze
BLOB_CLOSE =
"' AS BLOB)".freeze
HSTAR =
"H*".freeze
TIME_FORMAT =
"'%H:%M:%S'".freeze
DEFAULT_FROM =
" FROM sysibm.sysdummy1".freeze
ROWS =
" ROWS".freeze
FETCH_FIRST =
" FETCH FIRST ".freeze
ROWS_ONLY =
" ROWS ONLY".freeze
BOOL_TRUE =
'(1 = 1)'.freeze
BOOL_FALSE =
'(1 = 0)'.freeze
SELECT_CLAUSE_METHODS =
clause_methods(:select, %w'select distinct columns from join where group having compounds order limit lock')

Constants inherited from Dataset

Dataset::ACTION_METHODS, Dataset::ALL, Dataset::AND_SEPARATOR, Dataset::APOS, Dataset::APOS_RE, Dataset::ARG_BLOCK_ERROR_MSG, Dataset::ARRAY_ACCESS_ERROR_MSG, Dataset::ARRAY_EMPTY, Dataset::AS, Dataset::ASC, Dataset::BRACKET_CLOSE, Dataset::BRACKET_OPEN, Dataset::CASE_ELSE, Dataset::CASE_END, Dataset::CASE_OPEN, Dataset::CASE_THEN, Dataset::CASE_WHEN, Dataset::CAST_OPEN, Dataset::COLUMN_CHANGE_OPTS, Dataset::COLUMN_REF_RE1, Dataset::COLUMN_REF_RE2, Dataset::COLUMN_REF_RE3, Dataset::COMMA, Dataset::COMMA_SEPARATOR, Dataset::CONDITIONED_JOIN_TYPES, Dataset::CONDITION_FALSE, Dataset::CONDITION_TRUE, Dataset::COUNT_FROM_SELF_OPTS, Dataset::COUNT_OF_ALL_AS_COUNT, Dataset::DATASET_ALIAS_BASE_NAME, Dataset::DEFAULT, Dataset::DEFAULT_VALUES, Dataset::DELETE, Dataset::DELETE_CLAUSE_METHODS, Dataset::DESC, Dataset::DISTINCT, Dataset::DOT, Dataset::DOUBLE_APOS, Dataset::DOUBLE_QUOTE, Dataset::EQUAL, Dataset::EXISTS, Dataset::EXTRACT, Dataset::FORMAT_DATE, Dataset::FORMAT_DATE_STANDARD, Dataset::FORMAT_OFFSET, Dataset::FORMAT_TIMESTAMP_RE, Dataset::FORMAT_TIMESTAMP_USEC, Dataset::FORMAT_USEC, Dataset::FOR_UPDATE, Dataset::FRAME_ALL, Dataset::FRAME_ROWS, Dataset::FROM, Dataset::FUNCTION_EMPTY, Dataset::GROUP_BY, Dataset::HAVING, Dataset::IMPORT_ERROR_MSG, Dataset::INSERT, Dataset::INSERT_CLAUSE_METHODS, Dataset::INTO, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::JOIN_METHODS, Dataset::LIMIT, Dataset::MUTATION_METHODS, Dataset::NON_SQL_OPTIONS, Dataset::NOTIMPL_MSG, Dataset::NOT_SPACE, Dataset::NULL, Dataset::NULLS_FIRST, Dataset::NULLS_LAST, Dataset::N_ARITY_OPERATORS, Dataset::ON, Dataset::ON_PAREN, Dataset::ORDER_BY, Dataset::ORDER_BY_NS, Dataset::OVER, Dataset::PAREN_SPACE_OPEN, Dataset::PARTITION_BY, Dataset::PREPARED_ARG_PLACEHOLDER, Dataset::PRIVATE_APPEND_METHODS, Dataset::PUBLIC_APPEND_METHODS, Dataset::QUALIFY_KEYS, Dataset::QUERY_METHODS, Dataset::QUESTION_MARK, Dataset::QUESTION_MARK_RE, Dataset::QUOTE, Dataset::QUOTE_RE, Dataset::RETURNING, Dataset::SELECT, Dataset::SET, Dataset::SPACE, Dataset::SPACE_WITH, Dataset::SQL_WITH, Dataset::STANDARD_TIMESTAMP_FORMAT, Dataset::TILDE, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, Dataset::UNCONDITIONED_JOIN_TYPES, Dataset::UNDERSCORE, Dataset::UPDATE, Dataset::UPDATE_CLAUSE_METHODS, Dataset::USING, Dataset::V190, Dataset::VALUES, Dataset::WHERE, Dataset::WILDCARD

Instance Attribute Summary

Attributes inherited from Sequel::JDBC::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 Sequel::JDBC::Dataset

#fetch_rows, #prepare

Methods inherited from Dataset

#<<, #==, #[], #[]=, #add_graph_aliases, #aliased_expression_sql_append, #all, #and, #array_sql_append, #avg, #bind, #boolean_constant_sql_append, #call, clause_methods, #clone, #column_all_sql_append, #columns, #columns!, #constant_sql_append, #count, def_append_methods, #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_append, #get, #graph, #grep, #group, #group_and_count, #group_by, #group_cube, #group_rollup, #hash, #having, #import, #initialize, #insert, #insert_multiple, #insert_sql, #inspect, #intersect, #interval, introspect_all_columns, #invert, #join, #join_clause_sql_append, #join_on_clause_sql_append, #join_table, #join_using_clause_sql_append, #last, #limit, #literal_append, #lock_style, #map, #max, #min, #multi_insert, #multi_insert_sql, #naked, #naked!, #negative_boolean_constant_sql_append, #nullify, #nullify!, #or, #order, #order_append, #order_by, #order_more, #order_prepend, #ordered_expression_sql_append, #paginate, #placeholder_literal_string_sql_append, #prepare, #print, #provides_accurate_rows_matched?, #qualified_identifier_sql_append, #qualify, #qualify_to, #qualify_to_first_source, #query, #quote_identifier_append, #quote_identifiers?, #quote_schema_table_append, #quoted_identifier_append, #range, #recursive_cte_requires_column_aliases?, #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_hash_groups, #select_map, #select_more, #select_order_map, #select_remove, #select_sql, #server, #set, #set_defaults, #set_graph_aliases, #set_overrides, #single_record, #single_value, #split_alias, #sql, #subscript_sql_append, #sum, #supports_cte?, #supports_cte_in_subqueries?, #supports_distinct_on?, #supports_group_cube?, #supports_insert_select?, #supports_intersect_except?, #supports_intersect_except_all?, #supports_join_using?, #supports_modifying_joins?, #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, #to_hash_groups, #truncate, #truncate_sql, #unbind, #unfiltered, #ungraphed, #ungrouped, #union, #unlimited, #unordered, #unused_table_alias, #update, #update_sql, #where, #window_function_sql_append, #window_sql_append, #with, #with_recursive, #with_sql, #with_sql_delete

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::Dataset

Instance Method Details

#case_expression_sql_append(sql, ce) ⇒ Object

Derby doesn’t support an expression between CASE and WHEN, so emulate it by using an equality statement for all of the conditions.



166
167
168
169
170
171
172
173
# File 'lib/sequel/adapters/jdbc/derby.rb', line 166

def case_expression_sql_append(sql, ce)
  if ce.expression?
    e = ce.expression
    case_expression_sql_append(sql, ::Sequel::SQL::CaseExpression.new(ce.conditions.map{|c, r| [::Sequel::SQL::BooleanExpression.new(:'=', e, c), r]}, ce.default))
  else
    super
  end
end

#cast_sql_append(sql, expr, type) ⇒ Object

If the type is String, trim the extra spaces since CHAR is used instead of varchar. This can cause problems if you are casting a char/varchar to a string and the ending whitespace is important.



178
179
180
181
182
183
184
185
186
# File 'lib/sequel/adapters/jdbc/derby.rb', line 178

def cast_sql_append(sql, expr, type)
  if type == String
    sql << CAST_STRING_OPEN
    super
    sql << PAREN_CLOSE
  else
    super
  end
end

#complex_expression_sql_append(sql, op, args) ⇒ Object

Handle Derby specific LIKE, extract, and some bitwise compliment support.



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# File 'lib/sequel/adapters/jdbc/derby.rb', line 189

def complex_expression_sql_append(sql, op, args)
  case op
  when :ILIKE
    super(sql, :LIKE, [SQL::Function.new(:upper, args.at(0)), SQL::Function.new(:upper, args.at(1))])
  when :"NOT ILIKE"
    super(sql, :"NOT LIKE", [SQL::Function.new(:upper, args.at(0)), SQL::Function.new(:upper, args.at(1))])
  when :%
    sql << complex_expression_arg_pairs(args){|a, b| "MOD(#{literal(a)}, #{literal(b)})"}
  when :&, :|, :^, :<<, :>>
    raise Error, "Derby doesn't support the #{op} operator"
  when :'B~'
    sql << BITCOMP_OPEN
    literal_append(sql, args.at(0))
    sql << BITCOMP_CLOSE
  when :extract
    sql << args.at(0).to_s << PAREN_OPEN
    literal_append(sql, args.at(1))
    sql << PAREN_CLOSE
  else
    super
  end
end

#supports_group_rollup?Boolean

Derby supports GROUP BY ROLLUP (but not CUBE)

Returns:

  • (Boolean)


213
214
215
# File 'lib/sequel/adapters/jdbc/derby.rb', line 213

def supports_group_rollup?
  true
end

#supports_is_true?Boolean

Derby does not support IS TRUE.

Returns:

  • (Boolean)


218
219
220
# File 'lib/sequel/adapters/jdbc/derby.rb', line 218

def supports_is_true?
  false
end

#supports_multiple_column_in?Boolean

Derby does not support IN/NOT IN with multiple columns

Returns:

  • (Boolean)


223
224
225
# File 'lib/sequel/adapters/jdbc/derby.rb', line 223

def supports_multiple_column_in?
  false
end