class Sequel::JDBC::Derby::Dataset

Public Instance Methods

case_expression_sql_append(sql, ce) click to toggle source

Derby doesn't support an expression between CASE and WHEN, so remove conditions.

    # File lib/sequel/adapters/jdbc/derby.rb
187 def case_expression_sql_append(sql, ce)
188   super(sql, ce.with_merged_expression)
189 end
cast_sql_append(sql, expr, type) click to toggle source

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.

Calls superclass method Sequel::Dataset#cast_sql_append
    # File lib/sequel/adapters/jdbc/derby.rb
194 def cast_sql_append(sql, expr, type)
195   if type == String
196     sql << "RTRIM("
197     super
198     sql << ')'
199   else
200     super
201   end
202 end
complex_expression_sql_append(sql, op, args) click to toggle source
    # File lib/sequel/adapters/jdbc/derby.rb
204 def complex_expression_sql_append(sql, op, args)
205   case op
206   when :%, :'B~'
207     complex_expression_emulate_append(sql, op, args)
208   when :&, :|, :^, :<<, :>>
209     raise Error, "Derby doesn't support the #{op} operator"
210   when :**
211     sql << 'exp('
212     literal_append(sql, args[1])
213     sql << ' * ln('
214     literal_append(sql, args[0])
215     sql << "))"
216   when :extract
217     sql << args[0].to_s << '('
218     literal_append(sql, args[1])
219     sql << ')'
220   else
221     super
222   end
223 end
supports_group_rollup?() click to toggle source

Derby supports GROUP BY ROLLUP (but not CUBE)

    # File lib/sequel/adapters/jdbc/derby.rb
226 def supports_group_rollup?
227   true
228 end
supports_is_true?() click to toggle source

Derby does not support IS TRUE.

    # File lib/sequel/adapters/jdbc/derby.rb
231 def supports_is_true?
232   false
233 end
supports_multiple_column_in?() click to toggle source

Derby does not support IN/NOT IN with multiple columns

    # File lib/sequel/adapters/jdbc/derby.rb
236 def supports_multiple_column_in?
237   false
238 end

Private Instance Methods

empty_from_sql() click to toggle source
    # File lib/sequel/adapters/jdbc/derby.rb
242 def empty_from_sql
243   " FROM sysibm.sysdummy1"
244 end
insert_supports_empty_values?() click to toggle source

Derby needs the standard workaround to insert all default values into a table with more than one column.

    # File lib/sequel/adapters/jdbc/derby.rb
253 def insert_supports_empty_values?
254   false
255 end
literal_blob_append(sql, v) click to toggle source

Derby needs a hex string casted to BLOB for blobs.

    # File lib/sequel/adapters/jdbc/derby.rb
247 def literal_blob_append(sql, v)
248   sql << "CAST(X'" << v.unpack("H*").first << "' AS BLOB)"
249 end
literal_false() click to toggle source

Newer Derby versions can use the FALSE literal, but older versions need an always false expression.

    # File lib/sequel/adapters/jdbc/derby.rb
258 def literal_false
259   if db.svn_version >= 1040133
260     'FALSE'
261   else
262     '(1 = 0)'
263   end
264 end
literal_sqltime(v) click to toggle source

Derby handles fractional seconds in timestamps, but not in times

    # File lib/sequel/adapters/jdbc/derby.rb
267 def literal_sqltime(v)
268   v.strftime("'%H:%M:%S'")
269 end
literal_true() click to toggle source

Newer Derby versions can use the TRUE literal, but older versions need an always false expression.

    # File lib/sequel/adapters/jdbc/derby.rb
272 def literal_true
273   if db.svn_version >= 1040133
274     'TRUE'
275   else
276     '(1 = 1)'
277   end
278 end
multi_insert_sql_strategy() click to toggle source

Derby supports multiple rows for VALUES in INSERT.

    # File lib/sequel/adapters/jdbc/derby.rb
281 def multi_insert_sql_strategy
282   :values
283 end
native_function_name(emulated_function) click to toggle source

Emulate the char_length function with length

Calls superclass method Sequel::Dataset#native_function_name
    # File lib/sequel/adapters/jdbc/derby.rb
286 def native_function_name(emulated_function)
287   if emulated_function == :char_length
288     'length'
289   else
290     super
291   end
292 end
select_limit_sql(sql) click to toggle source

Offset comes before limit in Derby

    # File lib/sequel/adapters/jdbc/derby.rb
295 def select_limit_sql(sql)
296   if o = @opts[:offset]
297     sql << " OFFSET "
298     literal_append(sql, o)
299     sql << " ROWS"
300   end
301   if l = @opts[:limit]
302     sql << " FETCH FIRST "
303     literal_append(sql, l)
304     sql << " ROWS ONLY"
305   end
306 end