sequel 4.30.0 → 4.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +18 -0
- data/MIT-LICENSE +1 -1
- data/bin/sequel +1 -0
- data/doc/opening_databases.rdoc +6 -0
- data/doc/release_notes/4.31.0.txt +57 -0
- data/lib/sequel.rb +2 -0
- data/lib/sequel/adapters/ado.rb +2 -0
- data/lib/sequel/adapters/ado/access.rb +2 -0
- data/lib/sequel/adapters/ado/mssql.rb +2 -0
- data/lib/sequel/adapters/amalgalite.rb +2 -0
- data/lib/sequel/adapters/cubrid.rb +2 -0
- data/lib/sequel/adapters/do.rb +2 -0
- data/lib/sequel/adapters/do/mysql.rb +2 -0
- data/lib/sequel/adapters/do/postgres.rb +2 -0
- data/lib/sequel/adapters/do/sqlite3.rb +2 -0
- data/lib/sequel/adapters/ibmdb.rb +3 -1
- data/lib/sequel/adapters/jdbc.rb +2 -0
- data/lib/sequel/adapters/jdbc/as400.rb +2 -0
- data/lib/sequel/adapters/jdbc/cubrid.rb +2 -0
- data/lib/sequel/adapters/jdbc/db2.rb +2 -0
- data/lib/sequel/adapters/jdbc/derby.rb +2 -0
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +2 -0
- data/lib/sequel/adapters/jdbc/h2.rb +2 -0
- data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -0
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +2 -0
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +2 -0
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -0
- data/lib/sequel/adapters/jdbc/mssql.rb +2 -0
- data/lib/sequel/adapters/jdbc/mysql.rb +2 -0
- data/lib/sequel/adapters/jdbc/oracle.rb +2 -0
- data/lib/sequel/adapters/jdbc/postgresql.rb +24 -1
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +2 -0
- data/lib/sequel/adapters/jdbc/sqlite.rb +2 -0
- data/lib/sequel/adapters/jdbc/sqlserver.rb +2 -0
- data/lib/sequel/adapters/jdbc/transactions.rb +2 -0
- data/lib/sequel/adapters/mock.rb +2 -0
- data/lib/sequel/adapters/mysql.rb +2 -0
- data/lib/sequel/adapters/mysql2.rb +2 -0
- data/lib/sequel/adapters/odbc.rb +2 -0
- data/lib/sequel/adapters/odbc/db2.rb +2 -0
- data/lib/sequel/adapters/odbc/mssql.rb +2 -0
- data/lib/sequel/adapters/odbc/progress.rb +2 -0
- data/lib/sequel/adapters/oracle.rb +4 -2
- data/lib/sequel/adapters/postgres.rb +5 -3
- data/lib/sequel/adapters/postgresql.rb +2 -0
- data/lib/sequel/adapters/shared/access.rb +2 -0
- data/lib/sequel/adapters/shared/cubrid.rb +2 -0
- data/lib/sequel/adapters/shared/db2.rb +2 -0
- data/lib/sequel/adapters/shared/firebird.rb +2 -0
- data/lib/sequel/adapters/shared/informix.rb +2 -0
- data/lib/sequel/adapters/shared/mssql.rb +2 -0
- data/lib/sequel/adapters/shared/mysql.rb +5 -1
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +2 -0
- data/lib/sequel/adapters/shared/oracle.rb +5 -3
- data/lib/sequel/adapters/shared/postgres.rb +19 -12
- data/lib/sequel/adapters/shared/progress.rb +2 -0
- data/lib/sequel/adapters/shared/sqlanywhere.rb +3 -1
- data/lib/sequel/adapters/shared/sqlite.rb +2 -0
- data/lib/sequel/adapters/sqlanywhere.rb +2 -0
- data/lib/sequel/adapters/sqlite.rb +4 -1
- data/lib/sequel/adapters/swift.rb +2 -0
- data/lib/sequel/adapters/swift/mysql.rb +2 -0
- data/lib/sequel/adapters/swift/postgres.rb +2 -0
- data/lib/sequel/adapters/swift/sqlite.rb +2 -0
- data/lib/sequel/adapters/tinytds.rb +2 -0
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +5 -3
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +5 -3
- data/lib/sequel/adapters/utils/pg_types.rb +2 -0
- data/lib/sequel/adapters/utils/replace.rb +2 -0
- data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
- data/lib/sequel/adapters/utils/stored_procedures.rb +2 -0
- data/lib/sequel/ast_transformer.rb +2 -0
- data/lib/sequel/connection_pool.rb +2 -0
- data/lib/sequel/connection_pool/sharded_single.rb +2 -0
- data/lib/sequel/connection_pool/sharded_threaded.rb +2 -0
- data/lib/sequel/connection_pool/single.rb +2 -0
- data/lib/sequel/connection_pool/threaded.rb +2 -0
- data/lib/sequel/core.rb +2 -0
- data/lib/sequel/database.rb +2 -0
- data/lib/sequel/database/connecting.rb +2 -0
- data/lib/sequel/database/dataset.rb +2 -0
- data/lib/sequel/database/dataset_defaults.rb +2 -0
- data/lib/sequel/database/features.rb +2 -0
- data/lib/sequel/database/logging.rb +2 -0
- data/lib/sequel/database/misc.rb +2 -0
- data/lib/sequel/database/query.rb +2 -0
- data/lib/sequel/database/schema_generator.rb +2 -0
- data/lib/sequel/database/schema_methods.rb +11 -4
- data/lib/sequel/database/transactions.rb +2 -0
- data/lib/sequel/dataset.rb +2 -0
- data/lib/sequel/dataset/actions.rb +2 -0
- data/lib/sequel/dataset/features.rb +2 -0
- data/lib/sequel/dataset/graph.rb +2 -0
- data/lib/sequel/dataset/misc.rb +2 -0
- data/lib/sequel/dataset/mutation.rb +2 -0
- data/lib/sequel/dataset/placeholder_literalizer.rb +3 -1
- data/lib/sequel/dataset/prepared_statements.rb +2 -0
- data/lib/sequel/dataset/query.rb +2 -0
- data/lib/sequel/dataset/sql.rb +7 -5
- data/lib/sequel/deprecated.rb +2 -0
- data/lib/sequel/exceptions.rb +2 -0
- data/lib/sequel/extensions/_pretty_table.rb +5 -3
- data/lib/sequel/extensions/arbitrary_servers.rb +2 -0
- data/lib/sequel/extensions/blank.rb +2 -0
- data/lib/sequel/extensions/columns_introspection.rb +2 -0
- data/lib/sequel/extensions/connection_validator.rb +2 -0
- data/lib/sequel/extensions/constraint_validations.rb +2 -0
- data/lib/sequel/extensions/core_extensions.rb +2 -0
- data/lib/sequel/extensions/core_refinements.rb +2 -0
- data/lib/sequel/extensions/current_datetime_timestamp.rb +2 -0
- data/lib/sequel/extensions/dataset_source_alias.rb +2 -0
- data/lib/sequel/extensions/date_arithmetic.rb +3 -1
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -0
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +2 -0
- data/lib/sequel/extensions/error_sql.rb +2 -0
- data/lib/sequel/extensions/eval_inspect.rb +2 -0
- data/lib/sequel/extensions/filter_having.rb +2 -0
- data/lib/sequel/extensions/from_block.rb +2 -0
- data/lib/sequel/extensions/graph_each.rb +2 -0
- data/lib/sequel/extensions/hash_aliases.rb +2 -0
- data/lib/sequel/extensions/inflector.rb +2 -0
- data/lib/sequel/extensions/looser_typecasting.rb +2 -0
- data/lib/sequel/extensions/meta_def.rb +2 -0
- data/lib/sequel/extensions/migration.rb +14 -4
- data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +2 -0
- data/lib/sequel/extensions/named_timezones.rb +2 -0
- data/lib/sequel/extensions/null_dataset.rb +2 -0
- data/lib/sequel/extensions/pagination.rb +2 -0
- data/lib/sequel/extensions/pg_array.rb +16 -36
- data/lib/sequel/extensions/pg_array_ops.rb +2 -0
- data/lib/sequel/extensions/pg_enum.rb +4 -1
- data/lib/sequel/extensions/pg_hstore.rb +3 -1
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -0
- data/lib/sequel/extensions/pg_inet.rb +2 -0
- data/lib/sequel/extensions/pg_inet_ops.rb +2 -0
- data/lib/sequel/extensions/pg_interval.rb +3 -1
- data/lib/sequel/extensions/pg_json.rb +2 -0
- data/lib/sequel/extensions/pg_json_ops.rb +2 -0
- data/lib/sequel/extensions/pg_loose_count.rb +2 -0
- data/lib/sequel/extensions/pg_range.rb +2 -0
- data/lib/sequel/extensions/pg_range_ops.rb +2 -0
- data/lib/sequel/extensions/pg_row.rb +2 -0
- data/lib/sequel/extensions/pg_row_ops.rb +2 -0
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -0
- data/lib/sequel/extensions/pretty_table.rb +2 -0
- data/lib/sequel/extensions/query.rb +2 -0
- data/lib/sequel/extensions/query_literals.rb +2 -0
- data/lib/sequel/extensions/round_timestamps.rb +2 -0
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +2 -0
- data/lib/sequel/extensions/schema_caching.rb +2 -0
- data/lib/sequel/extensions/schema_dumper.rb +4 -1
- data/lib/sequel/extensions/select_remove.rb +2 -0
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +3 -1
- data/lib/sequel/extensions/server_block.rb +2 -0
- data/lib/sequel/extensions/set_overrides.rb +2 -0
- data/lib/sequel/extensions/split_array_nil.rb +2 -0
- data/lib/sequel/extensions/sql_expr.rb +2 -0
- data/lib/sequel/extensions/string_date_time.rb +2 -0
- data/lib/sequel/extensions/thread_local_timezones.rb +2 -0
- data/lib/sequel/extensions/to_dot.rb +3 -1
- data/lib/sequel/model.rb +2 -0
- data/lib/sequel/model/associations.rb +3 -1
- data/lib/sequel/model/base.rb +5 -1
- data/lib/sequel/model/dataset_module.rb +2 -0
- data/lib/sequel/model/default_inflections.rb +2 -0
- data/lib/sequel/model/errors.rb +2 -0
- data/lib/sequel/model/exceptions.rb +2 -0
- data/lib/sequel/model/inflections.rb +2 -0
- data/lib/sequel/model/plugins.rb +2 -0
- data/lib/sequel/no_core_ext.rb +2 -0
- data/lib/sequel/plugins/accessed_columns.rb +2 -0
- data/lib/sequel/plugins/active_model.rb +2 -0
- data/lib/sequel/plugins/after_initialize.rb +2 -0
- data/lib/sequel/plugins/association_autoreloading.rb +2 -0
- data/lib/sequel/plugins/association_dependencies.rb +2 -0
- data/lib/sequel/plugins/association_pks.rb +20 -24
- data/lib/sequel/plugins/association_proxies.rb +2 -0
- data/lib/sequel/plugins/auto_validations.rb +2 -0
- data/lib/sequel/plugins/before_after_save.rb +2 -0
- data/lib/sequel/plugins/blacklist_security.rb +2 -0
- data/lib/sequel/plugins/boolean_readers.rb +2 -0
- data/lib/sequel/plugins/boolean_subsets.rb +2 -0
- data/lib/sequel/plugins/caching.rb +2 -0
- data/lib/sequel/plugins/class_table_inheritance.rb +2 -0
- data/lib/sequel/plugins/column_conflicts.rb +2 -0
- data/lib/sequel/plugins/column_select.rb +2 -0
- data/lib/sequel/plugins/composition.rb +2 -0
- data/lib/sequel/plugins/constraint_validations.rb +2 -0
- data/lib/sequel/plugins/csv_serializer.rb +2 -0
- data/lib/sequel/plugins/dataset_associations.rb +2 -0
- data/lib/sequel/plugins/defaults_setter.rb +2 -0
- data/lib/sequel/plugins/delay_add_association.rb +2 -0
- data/lib/sequel/plugins/dirty.rb +2 -0
- data/lib/sequel/plugins/eager_each.rb +2 -0
- data/lib/sequel/plugins/error_splitter.rb +2 -0
- data/lib/sequel/plugins/force_encoding.rb +2 -0
- data/lib/sequel/plugins/hook_class_methods.rb +2 -0
- data/lib/sequel/plugins/identifier_columns.rb +2 -0
- data/lib/sequel/plugins/input_transformer.rb +2 -0
- data/lib/sequel/plugins/insert_returning_select.rb +2 -0
- data/lib/sequel/plugins/instance_filters.rb +2 -0
- data/lib/sequel/plugins/instance_hooks.rb +2 -0
- data/lib/sequel/plugins/inverted_subsets.rb +2 -0
- data/lib/sequel/plugins/json_serializer.rb +2 -0
- data/lib/sequel/plugins/lazy_attributes.rb +2 -0
- data/lib/sequel/plugins/list.rb +2 -0
- data/lib/sequel/plugins/many_through_many.rb +2 -0
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +2 -0
- data/lib/sequel/plugins/modification_detection.rb +2 -0
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +2 -0
- data/lib/sequel/plugins/nested_attributes.rb +2 -0
- data/lib/sequel/plugins/optimistic_locking.rb +2 -0
- data/lib/sequel/plugins/pg_array_associations.rb +2 -0
- data/lib/sequel/plugins/pg_row.rb +2 -0
- data/lib/sequel/plugins/pg_typecast_on_load.rb +2 -0
- data/lib/sequel/plugins/prepared_statements.rb +2 -0
- data/lib/sequel/plugins/prepared_statements_associations.rb +2 -0
- data/lib/sequel/plugins/prepared_statements_safe.rb +2 -0
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +2 -0
- data/lib/sequel/plugins/rcte_tree.rb +2 -0
- data/lib/sequel/plugins/schema.rb +2 -0
- data/lib/sequel/plugins/scissors.rb +2 -0
- data/lib/sequel/plugins/serialization.rb +2 -0
- data/lib/sequel/plugins/serialization_modification_detection.rb +2 -0
- data/lib/sequel/plugins/sharding.rb +2 -0
- data/lib/sequel/plugins/single_table_inheritance.rb +2 -0
- data/lib/sequel/plugins/singular_table_names.rb +2 -0
- data/lib/sequel/plugins/skip_create_refresh.rb +2 -0
- data/lib/sequel/plugins/split_values.rb +2 -0
- data/lib/sequel/plugins/static_cache.rb +2 -0
- data/lib/sequel/plugins/string_stripper.rb +2 -0
- data/lib/sequel/plugins/subclasses.rb +2 -0
- data/lib/sequel/plugins/subset_conditions.rb +2 -0
- data/lib/sequel/plugins/table_select.rb +2 -0
- data/lib/sequel/plugins/tactical_eager_loading.rb +2 -0
- data/lib/sequel/plugins/timestamps.rb +2 -0
- data/lib/sequel/plugins/touch.rb +2 -0
- data/lib/sequel/plugins/tree.rb +2 -0
- data/lib/sequel/plugins/typecast_on_load.rb +2 -0
- data/lib/sequel/plugins/unlimited_update.rb +2 -0
- data/lib/sequel/plugins/update_or_create.rb +2 -0
- data/lib/sequel/plugins/update_primary_key.rb +2 -0
- data/lib/sequel/plugins/update_refresh.rb +2 -0
- data/lib/sequel/plugins/uuid.rb +2 -0
- data/lib/sequel/plugins/validate_associated.rb +2 -0
- data/lib/sequel/plugins/validation_class_methods.rb +2 -0
- data/lib/sequel/plugins/validation_helpers.rb +3 -1
- data/lib/sequel/plugins/xml_serializer.rb +2 -0
- data/lib/sequel/sql.rb +3 -1
- data/lib/sequel/timezones.rb +2 -0
- data/lib/sequel/version.rb +3 -1
- data/spec/adapters/mysql_spec.rb +4 -0
- data/spec/adapters/postgres_spec.rb +35 -11
- data/spec/core/connection_pool_spec.rb +1 -1
- data/spec/extensions/association_pks_spec.rb +4 -2
- data/spec/extensions/caching_spec.rb +1 -1
- data/spec/extensions/csv_serializer_spec.rb +7 -0
- data/spec/extensions/date_arithmetic_spec.rb +1 -1
- data/spec/extensions/dirty_spec.rb +6 -6
- data/spec/extensions/force_encoding_spec.rb +12 -12
- data/spec/extensions/input_transformer_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +16 -0
- data/spec/extensions/modification_detection_spec.rb +2 -2
- data/spec/extensions/nested_attributes_spec.rb +1 -1
- data/spec/extensions/optimistic_locking_spec.rb +1 -1
- data/spec/extensions/pg_array_spec.rb +3 -8
- data/spec/files/double_migration/001_create_sessions.rb +9 -0
- data/spec/files/double_migration/002_create_nodes.rb +19 -0
- data/spec/files/double_migration/003_3_create_users.rb +4 -0
- data/spec/files/empty_migration/001_create_sessions.rb +9 -0
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +4 -0
- metadata +11 -3
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
Sequel.require 'adapters/utils/split_alter_table'
|
|
2
4
|
Sequel.require 'adapters/utils/replace'
|
|
3
5
|
|
|
@@ -187,7 +189,7 @@ module Sequel
|
|
|
187
189
|
|
|
188
190
|
def alter_table_add_column_sql(table, op)
|
|
189
191
|
if related = op.delete(:table)
|
|
190
|
-
sql = super
|
|
192
|
+
sql = super.dup
|
|
191
193
|
op[:table] = related
|
|
192
194
|
op[:key] ||= primary_key_from_schema(related)
|
|
193
195
|
sql << ", ADD "
|
|
@@ -356,6 +358,8 @@ module Sequel
|
|
|
356
358
|
[pk]
|
|
357
359
|
elsif !(pkc = generator.constraints.select{|con| con[:type] == :primary_key}).empty?
|
|
358
360
|
pkc.first[:columns]
|
|
361
|
+
elsif !(pkc = generator.columns.select{|con| con[:primary_key] == true}).empty?
|
|
362
|
+
pkc.map{|c| c[:name]}
|
|
359
363
|
end
|
|
360
364
|
else
|
|
361
365
|
primary_key_from_schema(t)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
Sequel.require 'adapters/utils/emulate_offset_with_row_number'
|
|
2
4
|
|
|
3
5
|
module Sequel
|
|
@@ -342,7 +344,7 @@ module Sequel
|
|
|
342
344
|
def select_sql
|
|
343
345
|
return super if @opts[:sql]
|
|
344
346
|
if o = @opts[:offset]
|
|
345
|
-
columns = clone(:append_sql=>
|
|
347
|
+
columns = clone(:append_sql=>String.new, :placeholder_literal_null=>true).columns
|
|
346
348
|
dsa1 = dataset_alias(1)
|
|
347
349
|
rn = row_number_column
|
|
348
350
|
limit = @opts[:limit]
|
|
@@ -353,7 +355,7 @@ module Sequel
|
|
|
353
355
|
select(*columns).
|
|
354
356
|
where(SQL::Identifier.new(rn) > o)
|
|
355
357
|
ds = ds.where(SQL::Identifier.new(rn) <= Sequel.+(o, limit)) if limit
|
|
356
|
-
sql = @opts[:append_sql] ||
|
|
358
|
+
sql = @opts[:append_sql] || String.new
|
|
357
359
|
subselect_sql_append(sql, ds)
|
|
358
360
|
sql
|
|
359
361
|
elsif limit = @opts[:limit]
|
|
@@ -361,7 +363,7 @@ module Sequel
|
|
|
361
363
|
# Lock doesn't work in subselects, so don't use a subselect when locking.
|
|
362
364
|
# Don't use a subselect if custom SQL is used, as it breaks somethings.
|
|
363
365
|
ds = ds.from_self unless @opts[:lock]
|
|
364
|
-
sql = @opts[:append_sql] ||
|
|
366
|
+
sql = @opts[:append_sql] || String.new
|
|
365
367
|
subselect_sql_append(sql, ds.where(SQL::ComplexExpression.new(:<=, ROW_NUMBER_EXPRESSION, limit)))
|
|
366
368
|
sql
|
|
367
369
|
else
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
Sequel.require 'adapters/utils/pg_types'
|
|
2
4
|
|
|
3
5
|
module Sequel
|
|
@@ -373,7 +375,8 @@ module Sequel
|
|
|
373
375
|
# :server :: The server to which to send the NOTIFY statement, if the sharding support
|
|
374
376
|
# is being used.
|
|
375
377
|
def notify(channel, opts=OPTS)
|
|
376
|
-
sql =
|
|
378
|
+
sql = String.new
|
|
379
|
+
sql << "NOTIFY "
|
|
377
380
|
dataset.send(:identifier_append, sql, channel)
|
|
378
381
|
if payload = opts[:payload]
|
|
379
382
|
sql << ", "
|
|
@@ -583,7 +586,7 @@ module Sequel
|
|
|
583
586
|
s = super
|
|
584
587
|
if using = op[:using]
|
|
585
588
|
using = Sequel::LiteralString.new(using) if using.is_a?(String)
|
|
586
|
-
s
|
|
589
|
+
s += ' USING '
|
|
587
590
|
s << literal(using)
|
|
588
591
|
end
|
|
589
592
|
s
|
|
@@ -693,7 +696,8 @@ module Sequel
|
|
|
693
696
|
case constraint[:type]
|
|
694
697
|
when :exclude
|
|
695
698
|
elements = constraint[:elements].map{|c, op| "#{literal(c)} WITH #{op}"}.join(', ')
|
|
696
|
-
sql =
|
|
699
|
+
sql = String.new
|
|
700
|
+
sql << "#{"CONSTRAINT #{quote_identifier(constraint[:name])} " if constraint[:name]}EXCLUDE USING #{constraint[:using]||'gist'} (#{elements})#{" WHERE #{filter_expr(constraint[:where])}" if constraint[:where]}"
|
|
697
701
|
constraint_deferrable_sql_append(sql, constraint[:deferrable])
|
|
698
702
|
sql
|
|
699
703
|
when :foreign_key, :check
|
|
@@ -760,7 +764,8 @@ module Sequel
|
|
|
760
764
|
|
|
761
765
|
# SQL for doing fast table insert from stdin.
|
|
762
766
|
def copy_into_sql(table, opts)
|
|
763
|
-
sql =
|
|
767
|
+
sql = String.new
|
|
768
|
+
sql << "COPY #{literal(table)}"
|
|
764
769
|
if cols = opts[:columns]
|
|
765
770
|
sql << literal(Array(cols))
|
|
766
771
|
end
|
|
@@ -780,7 +785,8 @@ module Sequel
|
|
|
780
785
|
table
|
|
781
786
|
else
|
|
782
787
|
if opts[:options] || opts[:format]
|
|
783
|
-
options =
|
|
788
|
+
options = String.new
|
|
789
|
+
options << " ("
|
|
784
790
|
options << "FORMAT #{opts[:format]}" if opts[:format]
|
|
785
791
|
options << "#{', ' if opts[:format]}#{opts[:options]}" if opts[:options]
|
|
786
792
|
options << ')'
|
|
@@ -845,17 +851,17 @@ module Sequel
|
|
|
845
851
|
sql = super
|
|
846
852
|
|
|
847
853
|
if inherits = options[:inherits]
|
|
848
|
-
sql
|
|
854
|
+
sql += " INHERITS (#{Array(inherits).map{|t| quote_schema_table(t)}.join(', ')})"
|
|
849
855
|
end
|
|
850
856
|
|
|
851
857
|
if on_commit = options[:on_commit]
|
|
852
858
|
raise(Error, "can't provide :on_commit without :temp to create_table") unless options[:temp]
|
|
853
859
|
raise(Error, "unsupported on_commit option: #{on_commit.inspect}") unless ON_COMMIT.has_key?(on_commit)
|
|
854
|
-
sql
|
|
860
|
+
sql += " ON COMMIT #{ON_COMMIT[on_commit]}"
|
|
855
861
|
end
|
|
856
862
|
|
|
857
863
|
if server = options[:foreign]
|
|
858
|
-
sql
|
|
864
|
+
sql += " SERVER #{quote_identifier(server)}"
|
|
859
865
|
if foreign_opts = options[:options]
|
|
860
866
|
sql << " OPTIONS (#{foreign_opts.map{|k, v| "#{k} #{literal(v.to_s)}"}.join(', ')})"
|
|
861
867
|
end
|
|
@@ -867,9 +873,9 @@ module Sequel
|
|
|
867
873
|
def create_table_as_sql(name, sql, options)
|
|
868
874
|
result = create_table_prefix_sql name, options
|
|
869
875
|
if on_commit = options[:on_commit]
|
|
870
|
-
result
|
|
876
|
+
result += " ON COMMIT #{ON_COMMIT[on_commit]}"
|
|
871
877
|
end
|
|
872
|
-
result
|
|
878
|
+
result += " AS #{sql}"
|
|
873
879
|
end
|
|
874
880
|
|
|
875
881
|
# Use a PostgreSQL-specific create table generator
|
|
@@ -1111,7 +1117,8 @@ module Sequel
|
|
|
1111
1117
|
read_only = opts[:read_only]
|
|
1112
1118
|
deferrable = opts[:deferrable]
|
|
1113
1119
|
if level || !read_only.nil? || !deferrable.nil?
|
|
1114
|
-
sql =
|
|
1120
|
+
sql = String.new
|
|
1121
|
+
sql << "SET TRANSACTION"
|
|
1115
1122
|
sql << " ISOLATION LEVEL #{Sequel::Database::TRANSACTION_ISOLATION_LEVELS[level]}" if level
|
|
1116
1123
|
sql << " READ #{read_only ? 'ONLY' : 'WRITE'}" unless read_only.nil?
|
|
1117
1124
|
sql << " #{'NOT ' unless deferrable}DEFERRABLE" unless deferrable.nil?
|
|
@@ -1421,7 +1428,7 @@ module Sequel
|
|
|
1421
1428
|
if block_given? # perform locking inside a transaction and yield to block
|
|
1422
1429
|
@db.transaction(opts){lock(mode, opts); yield}
|
|
1423
1430
|
else
|
|
1424
|
-
sql = 'LOCK TABLE '
|
|
1431
|
+
sql = 'LOCK TABLE '.dup
|
|
1425
1432
|
source_list_append(sql, @opts[:from])
|
|
1426
1433
|
mode = mode.to_s.upcase.strip
|
|
1427
1434
|
unless LOCK_MODES.include?(mode)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
module SqlAnywhere
|
|
3
5
|
|
|
@@ -329,7 +331,7 @@ module Sequel
|
|
|
329
331
|
sql << Sequel::Dataset::PAREN_OPEN
|
|
330
332
|
literal_append(sql, args.at(0))
|
|
331
333
|
sql << Sequel::Dataset::SPACE << (op == :LIKE ? REGEXP : NOT_REGEXP) << Sequel::Dataset::SPACE
|
|
332
|
-
pattern =
|
|
334
|
+
pattern = String.new
|
|
333
335
|
last_c = ''
|
|
334
336
|
args.at(1).each_char do |c|
|
|
335
337
|
if c == '_' and not pattern.end_with?('\\') and last_c != '\\'
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
require 'sqlite3'
|
|
2
4
|
Sequel.require 'adapters/shared/sqlite'
|
|
3
5
|
|
|
@@ -242,7 +244,8 @@ module Sequel
|
|
|
242
244
|
cps = log_yield("PREPARE #{name}: #{sql}"){conn.prepare(sql)}
|
|
243
245
|
conn.prepared_statements[name] = [cps, sql]
|
|
244
246
|
end
|
|
245
|
-
log_sql =
|
|
247
|
+
log_sql = String.new
|
|
248
|
+
log_sql << "EXECUTE #{name}"
|
|
246
249
|
if ps.log_sql
|
|
247
250
|
log_sql << " ("
|
|
248
251
|
log_sql << sql
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
module EmulateOffsetWithReverseAndCount
|
|
3
5
|
# Make empty? work with an offset with an order.
|
|
@@ -27,7 +29,7 @@ module Sequel
|
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
ds = unlimited
|
|
30
|
-
row_count = @opts[:offset_total_count] || ds.clone(:append_sql=>
|
|
32
|
+
row_count = @opts[:offset_total_count] || ds.clone(:append_sql=>String.new, :placeholder_literal_null=>true).count
|
|
31
33
|
dsa1 = dataset_alias(1)
|
|
32
34
|
|
|
33
35
|
if o.is_a?(Symbol) && @opts[:bind_vars] && (match = Sequel::Dataset::PreparedStatementMethods::PLACEHOLDER_RE.match(o.to_s))
|
|
@@ -53,7 +55,7 @@ module Sequel
|
|
|
53
55
|
# shuld be returned, so use a condition that is always false.
|
|
54
56
|
ds.where(1=>0)
|
|
55
57
|
end
|
|
56
|
-
sql = @opts[:append_sql] ||
|
|
58
|
+
sql = @opts[:append_sql] || String.new
|
|
57
59
|
subselect_sql_append(sql, ds)
|
|
58
60
|
sql
|
|
59
61
|
end
|
|
@@ -69,7 +71,7 @@ module Sequel
|
|
|
69
71
|
# The default order to use for datasets with offsets, if no order is defined.
|
|
70
72
|
# By default, orders by all of the columns in the dataset.
|
|
71
73
|
def default_offset_order
|
|
72
|
-
clone(:append_sql=>
|
|
74
|
+
clone(:append_sql=>String.new, :offset=>nil).columns
|
|
73
75
|
end
|
|
74
76
|
end
|
|
75
77
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
module EmulateOffsetWithRowNumber
|
|
3
5
|
# If the offset must be emulated with ROW_NUMBER, don't remove any ordering,
|
|
@@ -28,10 +30,10 @@ module Sequel
|
|
|
28
30
|
end
|
|
29
31
|
end
|
|
30
32
|
|
|
31
|
-
columns = clone(:append_sql=>
|
|
33
|
+
columns = clone(:append_sql=>String.new, :placeholder_literal_null=>true).columns
|
|
32
34
|
dsa1 = dataset_alias(1)
|
|
33
35
|
rn = row_number_column
|
|
34
|
-
sql = @opts[:append_sql] ||
|
|
36
|
+
sql = @opts[:append_sql] || String.new
|
|
35
37
|
subselect_sql_append(sql, unlimited.
|
|
36
38
|
unordered.
|
|
37
39
|
select_append{ROW_NUMBER{}.over(:order=>order).as(rn)}.
|
|
@@ -75,7 +77,7 @@ module Sequel
|
|
|
75
77
|
end
|
|
76
78
|
end
|
|
77
79
|
end
|
|
78
|
-
clone(:append_sql=>
|
|
80
|
+
clone(:append_sql=>String.new).columns
|
|
79
81
|
end
|
|
80
82
|
|
|
81
83
|
# Whether an order is required when using offset emulation via ROW_NUMBER, true by default.
|
data/lib/sequel/core.rb
CHANGED
data/lib/sequel/database.rb
CHANGED