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

BOOL_TRUE =
'(1 = 1)'.freeze
BOOL_FALSE =
'(1 = 0)'.freeze
SELECT_CLAUSE_METHODS =
clause_methods(:select, %w'distinct columns from join where group having compounds order limit lock')

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 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, #initialize, #prepare

Methods inherited from Dataset

#<<, #==, #[], #[]=, #add_graph_aliases, #aliased_expression_sql, #all, #and, #array_sql, #avg, #bind, #boolean_constant_sql, #call, 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, #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_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_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

#case_expression_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.



114
115
116
117
118
119
120
121
# File 'lib/sequel/adapters/jdbc/derby.rb', line 114

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

#cast_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.



126
127
128
129
130
131
132
# File 'lib/sequel/adapters/jdbc/derby.rb', line 126

def cast_sql(expr, type)
  if type == String
    "RTRIM(#{super})"
  else
    super
  end
end

#complex_expression_sql(op, args) ⇒ Object

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



135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/sequel/adapters/jdbc/derby.rb', line 135

def complex_expression_sql(op, args)
  case op
  when :ILIKE
    super(:LIKE, [SQL::Function.new(:upper, args.at(0)), SQL::Function.new(:upper, args.at(1)) ])
  when :"NOT ILIKE"
    super(:"NOT LIKE", [SQL::Function.new(:upper, args.at(0)), SQL::Function.new(:upper, args.at(1)) ])
  when :&, :|, :^, :<<, :>>
    raise Error, "Derby doesn't support the #{op} operator"
  when :'B~'
    "((0 - #{literal(args.at(0))}) - 1)"
  when :extract
    "#{args.at(0)}(#{literal(args.at(1))})"
  else
    super
  end
end

#supports_is_true?Boolean

Derby does not support IS TRUE.

Returns:

  • (Boolean)


153
154
155
# File 'lib/sequel/adapters/jdbc/derby.rb', line 153

def supports_is_true?
  false
end

#supports_multiple_column_in?Boolean

Derby does not support IN/NOT IN with multiple columns

Returns:

  • (Boolean)


158
159
160
# File 'lib/sequel/adapters/jdbc/derby.rb', line 158

def supports_multiple_column_in?
  false
end