Class: Sequel::JDBC::Derby::Dataset
- Inherits:
-
Sequel::JDBC::Dataset
- Object
- Dataset
- Sequel::JDBC::Dataset
- Sequel::JDBC::Derby::Dataset
- 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
Attributes inherited from Dataset
#db, #identifier_input_method, #identifier_output_method, #opts, #quote_identifiers, #row_proc
Instance Method Summary collapse
-
#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.
-
#cast_sql(expr, type) ⇒ Object
If the type is String, trim the extra spaces since CHAR is used instead of varchar.
-
#complex_expression_sql(op, args) ⇒ Object
Handle Derby specific LIKE, extract, and some bitwise compliment support.
-
#supports_is_true? ⇒ Boolean
Derby does not support IS TRUE.
-
#supports_multiple_column_in? ⇒ Boolean
Derby does not support IN/NOT IN with multiple columns.
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
Methods included from SQL::StringMethods
Methods included from SQL::OrderMethods
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
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.
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
158 159 160 |
# File 'lib/sequel/adapters/jdbc/derby.rb', line 158 def supports_multiple_column_in? false end |