sequel 5.83.0 → 5.106.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/MIT-LICENSE +1 -1
- data/lib/sequel/adapters/ado/access.rb +2 -2
- data/lib/sequel/adapters/ado.rb +2 -2
- data/lib/sequel/adapters/amalgalite.rb +16 -1
- data/lib/sequel/adapters/ibmdb.rb +2 -1
- data/lib/sequel/adapters/jdbc/db2.rb +2 -2
- data/lib/sequel/adapters/jdbc/derby.rb +4 -2
- data/lib/sequel/adapters/jdbc/h2.rb +4 -4
- data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -2
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -2
- data/lib/sequel/adapters/jdbc/mysql.rb +3 -3
- data/lib/sequel/adapters/jdbc/oracle.rb +6 -6
- data/lib/sequel/adapters/jdbc/postgresql.rb +5 -5
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +6 -6
- data/lib/sequel/adapters/jdbc/sqlite.rb +3 -3
- data/lib/sequel/adapters/jdbc/sqlserver.rb +3 -3
- data/lib/sequel/adapters/jdbc.rb +29 -15
- data/lib/sequel/adapters/mysql.rb +1 -1
- data/lib/sequel/adapters/mysql2.rb +10 -3
- data/lib/sequel/adapters/odbc.rb +1 -1
- data/lib/sequel/adapters/oracle.rb +16 -0
- data/lib/sequel/adapters/postgres.rb +2 -1
- data/lib/sequel/adapters/shared/access.rb +1 -0
- data/lib/sequel/adapters/shared/db2.rb +8 -3
- data/lib/sequel/adapters/shared/mssql.rb +9 -8
- data/lib/sequel/adapters/shared/mysql.rb +16 -11
- data/lib/sequel/adapters/shared/oracle.rb +1 -0
- data/lib/sequel/adapters/shared/postgres.rb +438 -47
- data/lib/sequel/adapters/shared/sqlite.rb +9 -7
- data/lib/sequel/adapters/sqlite.rb +20 -2
- data/lib/sequel/adapters/tinytds.rb +2 -2
- data/lib/sequel/adapters/trilogy.rb +2 -3
- data/lib/sequel/ast_transformer.rb +2 -0
- data/lib/sequel/connection_pool/sharded_timed_queue.rb +42 -11
- data/lib/sequel/connection_pool/timed_queue.rb +33 -10
- data/lib/sequel/connection_pool.rb +8 -2
- data/lib/sequel/core.rb +31 -2
- data/lib/sequel/database/connecting.rb +1 -1
- data/lib/sequel/database/dataset_defaults.rb +3 -3
- data/lib/sequel/database/misc.rb +29 -11
- data/lib/sequel/database/query.rb +12 -12
- data/lib/sequel/database/schema_generator.rb +117 -16
- data/lib/sequel/database/schema_methods.rb +85 -30
- data/lib/sequel/dataset/actions.rb +83 -11
- data/lib/sequel/dataset/deprecated_singleton_class_methods.rb +1 -1
- data/lib/sequel/dataset/placeholder_literalizer.rb +3 -0
- data/lib/sequel/dataset/prepared_statements.rb +76 -28
- data/lib/sequel/dataset/query.rb +26 -11
- data/lib/sequel/dataset/sql.rb +40 -17
- data/lib/sequel/extensions/async_thread_pool.rb +1 -1
- data/lib/sequel/extensions/caller_logging.rb +1 -3
- data/lib/sequel/extensions/connection_checkout_event_callback.rb +151 -0
- data/lib/sequel/extensions/connection_expiration.rb +44 -5
- data/lib/sequel/extensions/connection_validator.rb +15 -10
- data/lib/sequel/extensions/constraint_validations.rb +3 -3
- data/lib/sequel/extensions/dataset_run.rb +41 -0
- data/lib/sequel/extensions/date_arithmetic.rb +6 -6
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -0
- data/lib/sequel/extensions/eval_inspect.rb +3 -1
- data/lib/sequel/extensions/inflector.rb +2 -2
- data/lib/sequel/extensions/lit_require_frozen.rb +131 -0
- data/lib/sequel/extensions/looser_typecasting.rb +5 -12
- data/lib/sequel/extensions/migration.rb +38 -21
- data/lib/sequel/extensions/null_dataset.rb +2 -2
- data/lib/sequel/extensions/pg_array_ops.rb +41 -0
- data/lib/sequel/extensions/pg_auto_parameterize.rb +10 -3
- data/lib/sequel/extensions/pg_auto_parameterize_duplicate_query_detection.rb +191 -0
- data/lib/sequel/extensions/pg_auto_parameterize_in_array.rb +94 -10
- data/lib/sequel/extensions/pg_enum.rb +4 -4
- data/lib/sequel/extensions/pg_hstore.rb +1 -1
- data/lib/sequel/extensions/pg_hstore_ops.rb +10 -5
- data/lib/sequel/extensions/pg_json_ops.rb +674 -18
- data/lib/sequel/extensions/pg_multirange.rb +1 -1
- data/lib/sequel/extensions/pg_range.rb +14 -2
- data/lib/sequel/extensions/pg_row.rb +5 -3
- data/lib/sequel/extensions/pg_schema_caching.rb +90 -0
- data/lib/sequel/extensions/provenance.rb +1 -3
- data/lib/sequel/extensions/query_blocker.rb +172 -0
- data/lib/sequel/extensions/schema_caching.rb +24 -9
- data/lib/sequel/extensions/schema_dumper.rb +17 -5
- data/lib/sequel/extensions/set_literalizer.rb +20 -39
- data/lib/sequel/extensions/split_array_nil.rb +12 -2
- data/lib/sequel/extensions/sqlite_json_ops.rb +1 -1
- data/lib/sequel/extensions/string_agg.rb +2 -2
- data/lib/sequel/extensions/to_dot.rb +5 -0
- data/lib/sequel/extensions/virtual_row_method_block.rb +1 -0
- data/lib/sequel/model/associations.rb +215 -15
- data/lib/sequel/model/base.rb +198 -35
- data/lib/sequel/model/plugins.rb +12 -1
- data/lib/sequel/model.rb +1 -0
- data/lib/sequel/plugins/accessed_columns.rb +4 -0
- data/lib/sequel/plugins/active_model.rb +5 -6
- data/lib/sequel/plugins/association_pks.rb +2 -0
- data/lib/sequel/plugins/auto_validations.rb +2 -0
- data/lib/sequel/plugins/class_table_inheritance_constraint_validations.rb +82 -0
- data/lib/sequel/plugins/columns_updated.rb +4 -0
- data/lib/sequel/plugins/composition.rb +3 -1
- data/lib/sequel/plugins/constraint_validations.rb +15 -10
- data/lib/sequel/plugins/dataset_associations.rb +20 -1
- data/lib/sequel/plugins/deprecated_associations.rb +151 -0
- data/lib/sequel/plugins/detect_unnecessary_association_options.rb +164 -0
- data/lib/sequel/plugins/dirty.rb +9 -2
- data/lib/sequel/plugins/enum.rb +1 -1
- data/lib/sequel/plugins/forbid_lazy_load.rb +15 -1
- data/lib/sequel/plugins/insert_conflict.rb +4 -0
- data/lib/sequel/plugins/insert_returning_select.rb +10 -1
- data/lib/sequel/plugins/inspect_pk.rb +44 -0
- data/lib/sequel/plugins/instance_filters.rb +8 -1
- data/lib/sequel/plugins/instance_hooks.rb +4 -0
- data/lib/sequel/plugins/inverted_subsets.rb +1 -0
- data/lib/sequel/plugins/json_serializer.rb +6 -10
- data/lib/sequel/plugins/lazy_attributes.rb +1 -1
- data/lib/sequel/plugins/many_through_many.rb +21 -0
- data/lib/sequel/plugins/modification_detection.rb +2 -0
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +1 -1
- data/lib/sequel/plugins/nested_attributes.rb +10 -5
- data/lib/sequel/plugins/paged_operations.rb +5 -2
- data/lib/sequel/plugins/pg_array_associations.rb +2 -2
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +6 -1
- data/lib/sequel/plugins/pg_auto_validate_enums.rb +88 -0
- data/lib/sequel/plugins/pg_eager_any_typed_array.rb +95 -0
- data/lib/sequel/plugins/pg_xmin_optimistic_locking.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +6 -6
- data/lib/sequel/plugins/serialization.rb +23 -6
- data/lib/sequel/plugins/serialization_modification_detection.rb +4 -0
- data/lib/sequel/plugins/single_statement_dataset_destroy.rb +49 -0
- data/lib/sequel/plugins/split_values.rb +12 -0
- data/lib/sequel/plugins/sql_comments.rb +7 -2
- data/lib/sequel/plugins/static_cache.rb +13 -0
- data/lib/sequel/plugins/static_cache_cache.rb +50 -13
- data/lib/sequel/plugins/subset_conditions.rb +85 -5
- data/lib/sequel/plugins/subset_static_cache.rb +278 -0
- data/lib/sequel/plugins/table_select.rb +7 -0
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -0
- data/lib/sequel/plugins/unused_associations.rb +11 -3
- data/lib/sequel/plugins/update_primary_key.rb +4 -0
- data/lib/sequel/plugins/validation_class_methods.rb +1 -1
- data/lib/sequel/plugins/validation_contexts.rb +4 -0
- data/lib/sequel/sql.rb +27 -12
- data/lib/sequel/version.rb +1 -1
- metadata +17 -240
- data/CHANGELOG +0 -1393
- data/README.rdoc +0 -936
- data/doc/advanced_associations.rdoc +0 -884
- data/doc/association_basics.rdoc +0 -1859
- data/doc/bin_sequel.rdoc +0 -146
- data/doc/cheat_sheet.rdoc +0 -255
- data/doc/code_order.rdoc +0 -104
- data/doc/core_extensions.rdoc +0 -405
- data/doc/dataset_basics.rdoc +0 -96
- data/doc/dataset_filtering.rdoc +0 -222
- data/doc/extensions.rdoc +0 -77
- data/doc/fork_safety.rdoc +0 -84
- data/doc/mass_assignment.rdoc +0 -98
- data/doc/migration.rdoc +0 -660
- data/doc/model_dataset_method_design.rdoc +0 -129
- data/doc/model_hooks.rdoc +0 -254
- data/doc/model_plugins.rdoc +0 -270
- data/doc/mssql_stored_procedures.rdoc +0 -43
- data/doc/object_model.rdoc +0 -563
- data/doc/opening_databases.rdoc +0 -439
- data/doc/postgresql.rdoc +0 -611
- data/doc/prepared_statements.rdoc +0 -144
- data/doc/querying.rdoc +0 -1070
- data/doc/reflection.rdoc +0 -120
- data/doc/release_notes/5.0.0.txt +0 -159
- data/doc/release_notes/5.1.0.txt +0 -31
- data/doc/release_notes/5.10.0.txt +0 -84
- data/doc/release_notes/5.11.0.txt +0 -83
- data/doc/release_notes/5.12.0.txt +0 -141
- data/doc/release_notes/5.13.0.txt +0 -27
- data/doc/release_notes/5.14.0.txt +0 -63
- data/doc/release_notes/5.15.0.txt +0 -39
- data/doc/release_notes/5.16.0.txt +0 -110
- data/doc/release_notes/5.17.0.txt +0 -31
- data/doc/release_notes/5.18.0.txt +0 -69
- data/doc/release_notes/5.19.0.txt +0 -28
- data/doc/release_notes/5.2.0.txt +0 -33
- data/doc/release_notes/5.20.0.txt +0 -89
- data/doc/release_notes/5.21.0.txt +0 -87
- data/doc/release_notes/5.22.0.txt +0 -48
- data/doc/release_notes/5.23.0.txt +0 -56
- data/doc/release_notes/5.24.0.txt +0 -56
- data/doc/release_notes/5.25.0.txt +0 -32
- data/doc/release_notes/5.26.0.txt +0 -35
- data/doc/release_notes/5.27.0.txt +0 -21
- data/doc/release_notes/5.28.0.txt +0 -16
- data/doc/release_notes/5.29.0.txt +0 -22
- data/doc/release_notes/5.3.0.txt +0 -121
- data/doc/release_notes/5.30.0.txt +0 -20
- data/doc/release_notes/5.31.0.txt +0 -148
- data/doc/release_notes/5.32.0.txt +0 -46
- data/doc/release_notes/5.33.0.txt +0 -24
- data/doc/release_notes/5.34.0.txt +0 -40
- data/doc/release_notes/5.35.0.txt +0 -56
- data/doc/release_notes/5.36.0.txt +0 -60
- data/doc/release_notes/5.37.0.txt +0 -30
- data/doc/release_notes/5.38.0.txt +0 -28
- data/doc/release_notes/5.39.0.txt +0 -19
- data/doc/release_notes/5.4.0.txt +0 -80
- data/doc/release_notes/5.40.0.txt +0 -40
- data/doc/release_notes/5.41.0.txt +0 -25
- data/doc/release_notes/5.42.0.txt +0 -136
- data/doc/release_notes/5.43.0.txt +0 -98
- data/doc/release_notes/5.44.0.txt +0 -32
- data/doc/release_notes/5.45.0.txt +0 -34
- data/doc/release_notes/5.46.0.txt +0 -87
- data/doc/release_notes/5.47.0.txt +0 -59
- data/doc/release_notes/5.48.0.txt +0 -14
- data/doc/release_notes/5.49.0.txt +0 -59
- data/doc/release_notes/5.5.0.txt +0 -61
- data/doc/release_notes/5.50.0.txt +0 -78
- data/doc/release_notes/5.51.0.txt +0 -47
- data/doc/release_notes/5.52.0.txt +0 -87
- data/doc/release_notes/5.53.0.txt +0 -23
- data/doc/release_notes/5.54.0.txt +0 -27
- data/doc/release_notes/5.55.0.txt +0 -21
- data/doc/release_notes/5.56.0.txt +0 -51
- data/doc/release_notes/5.57.0.txt +0 -23
- data/doc/release_notes/5.58.0.txt +0 -31
- data/doc/release_notes/5.59.0.txt +0 -73
- data/doc/release_notes/5.6.0.txt +0 -31
- data/doc/release_notes/5.60.0.txt +0 -22
- data/doc/release_notes/5.61.0.txt +0 -43
- data/doc/release_notes/5.62.0.txt +0 -132
- data/doc/release_notes/5.63.0.txt +0 -33
- data/doc/release_notes/5.64.0.txt +0 -50
- data/doc/release_notes/5.65.0.txt +0 -21
- data/doc/release_notes/5.66.0.txt +0 -24
- data/doc/release_notes/5.67.0.txt +0 -32
- data/doc/release_notes/5.68.0.txt +0 -61
- data/doc/release_notes/5.69.0.txt +0 -26
- data/doc/release_notes/5.7.0.txt +0 -108
- data/doc/release_notes/5.70.0.txt +0 -35
- data/doc/release_notes/5.71.0.txt +0 -21
- data/doc/release_notes/5.72.0.txt +0 -33
- data/doc/release_notes/5.73.0.txt +0 -66
- data/doc/release_notes/5.74.0.txt +0 -45
- data/doc/release_notes/5.75.0.txt +0 -35
- data/doc/release_notes/5.76.0.txt +0 -86
- data/doc/release_notes/5.77.0.txt +0 -63
- data/doc/release_notes/5.78.0.txt +0 -67
- data/doc/release_notes/5.79.0.txt +0 -28
- data/doc/release_notes/5.8.0.txt +0 -170
- data/doc/release_notes/5.80.0.txt +0 -40
- data/doc/release_notes/5.81.0.txt +0 -31
- data/doc/release_notes/5.82.0.txt +0 -61
- data/doc/release_notes/5.83.0.txt +0 -56
- data/doc/release_notes/5.9.0.txt +0 -99
- data/doc/schema_modification.rdoc +0 -679
- data/doc/security.rdoc +0 -443
- data/doc/sharding.rdoc +0 -286
- data/doc/sql.rdoc +0 -648
- data/doc/testing.rdoc +0 -204
- data/doc/thread_safety.rdoc +0 -15
- data/doc/transactions.rdoc +0 -250
- data/doc/validations.rdoc +0 -558
- data/doc/virtual_rows.rdoc +0 -265
|
@@ -106,7 +106,7 @@ module Sequel
|
|
|
106
106
|
values << value
|
|
107
107
|
end
|
|
108
108
|
|
|
109
|
-
sql = "DECLARE #{declarations.join(', ')}; EXECUTE @RC = #{name} #{values.join(', ')}; SELECT #{names.join(', ')}"
|
|
109
|
+
sql = "DECLARE #{declarations.join(', ')}; EXECUTE @RC = #{name} #{values.join(', ')}; SELECT #{names.join(', ')}".freeze
|
|
110
110
|
|
|
111
111
|
ds = dataset.with_sql(sql)
|
|
112
112
|
ds = ds.server(opts[:server]) if opts[:server]
|
|
@@ -400,7 +400,7 @@ module Sequel
|
|
|
400
400
|
# Error if a string is given.
|
|
401
401
|
def create_table_as(name, ds, options)
|
|
402
402
|
raise(Error, "must provide dataset instance as value of create_table :as option on MSSQL") unless ds.is_a?(Sequel::Dataset)
|
|
403
|
-
run(ds.into(name).sql)
|
|
403
|
+
run(ds.into(name).sql.freeze)
|
|
404
404
|
end
|
|
405
405
|
|
|
406
406
|
DATABASE_ERROR_REGEXPS = {
|
|
@@ -480,11 +480,11 @@ module Sequel
|
|
|
480
480
|
|
|
481
481
|
def schema_column_type(db_type)
|
|
482
482
|
case db_type
|
|
483
|
-
when /\A(?:bit)\z/
|
|
483
|
+
when /\A(?:bit)\z/i
|
|
484
484
|
:boolean
|
|
485
|
-
when /\A(?:(?:small)?money)\z/
|
|
485
|
+
when /\A(?:(?:small)?money)\z/i
|
|
486
486
|
:decimal
|
|
487
|
-
when /\A(timestamp|rowversion)\z/
|
|
487
|
+
when /\A(timestamp|rowversion)\z/i
|
|
488
488
|
:blob
|
|
489
489
|
else
|
|
490
490
|
super
|
|
@@ -574,6 +574,7 @@ module Sequel
|
|
|
574
574
|
|
|
575
575
|
module DatasetMethods
|
|
576
576
|
include(Module.new do
|
|
577
|
+
Sequel.set_temp_name(self){"Sequel::MSSQL::DatasetMethods::_SQLMethods"}
|
|
577
578
|
Dataset.def_sql_method(self, :select, %w'with select distinct limit columns into from lock join where group having compounds order')
|
|
578
579
|
end)
|
|
579
580
|
include EmulateOffsetWithRowNumber
|
|
@@ -678,7 +679,7 @@ module Sequel
|
|
|
678
679
|
|
|
679
680
|
# MSSQL uses the CONTAINS keyword for full text search
|
|
680
681
|
def full_text_search(cols, terms, opts = OPTS)
|
|
681
|
-
terms = "\"#{
|
|
682
|
+
terms = "\"#{Sequel.array_or_set_join(terms, '" OR "')}\"" if terms.is_a?(Array) || terms.is_a?(Set)
|
|
682
683
|
where(Sequel.lit("CONTAINS (?, ?)", cols, terms))
|
|
683
684
|
end
|
|
684
685
|
|
|
@@ -704,7 +705,7 @@ module Sequel
|
|
|
704
705
|
|
|
705
706
|
# Allows you to do a dirty read of uncommitted data using WITH (NOLOCK).
|
|
706
707
|
def nolock
|
|
707
|
-
|
|
708
|
+
cached_lock_style_dataset(:_nolock_ds, :dirty)
|
|
708
709
|
end
|
|
709
710
|
|
|
710
711
|
# Uses OUTER APPLY to join the given table into the current dataset.
|
|
@@ -877,7 +878,7 @@ module Sequel
|
|
|
877
878
|
elsif @opts[:output]
|
|
878
879
|
# no transaction: our multi_insert_sql_strategy should guarantee
|
|
879
880
|
# that there's only ever a single statement.
|
|
880
|
-
sql = multi_insert_sql(columns, values)[0]
|
|
881
|
+
sql = multi_insert_sql(columns, values)[0].freeze
|
|
881
882
|
naked.with_sql(sql).map{|v| v.length == 1 ? v.values.first : v}
|
|
882
883
|
else
|
|
883
884
|
super
|
|
@@ -40,7 +40,7 @@ module Sequel
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def commit_prepared_transaction(transaction_id, opts=OPTS)
|
|
43
|
-
run("XA COMMIT #{literal(transaction_id)}", opts)
|
|
43
|
+
run("XA COMMIT #{literal(transaction_id)}".freeze, opts)
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def database_type
|
|
@@ -103,7 +103,7 @@ module Sequel
|
|
|
103
103
|
sql += " FROM #{literal(schema)}"
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
-
metadata_dataset.with_sql(sql).each do |r|
|
|
106
|
+
metadata_dataset.with_sql(sql.freeze).each do |r|
|
|
107
107
|
name = r[:Key_name]
|
|
108
108
|
next if name == 'PRIMARY'
|
|
109
109
|
name = m.call(name)
|
|
@@ -115,7 +115,7 @@ module Sequel
|
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
def rollback_prepared_transaction(transaction_id, opts=OPTS)
|
|
118
|
-
run("XA ROLLBACK #{literal(transaction_id)}", opts)
|
|
118
|
+
run("XA ROLLBACK #{literal(transaction_id)}".freeze, opts)
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
# Whether the database is MariaDB and not MySQL
|
|
@@ -456,7 +456,7 @@ module Sequel
|
|
|
456
456
|
[pk]
|
|
457
457
|
elsif !(pkc = generator.constraints.select{|con| con[:type] == :primary_key}).empty?
|
|
458
458
|
pkc.first[:columns]
|
|
459
|
-
elsif !(pkc = generator.columns.select{|con| con[:primary_key]
|
|
459
|
+
elsif !(pkc = generator.columns.select{|con| con[:primary_key]}).empty?
|
|
460
460
|
pkc.map{|c| c[:name]}
|
|
461
461
|
end
|
|
462
462
|
else
|
|
@@ -550,11 +550,11 @@ module Sequel
|
|
|
550
550
|
|
|
551
551
|
def schema_column_type(db_type)
|
|
552
552
|
case db_type
|
|
553
|
-
when /\Aset/
|
|
553
|
+
when /\Aset/i
|
|
554
554
|
:set
|
|
555
|
-
when /\Amediumint/
|
|
555
|
+
when /\Amediumint/i
|
|
556
556
|
:integer
|
|
557
|
-
when /\Amediumtext/
|
|
557
|
+
when /\Amediumtext/i
|
|
558
558
|
:string
|
|
559
559
|
else
|
|
560
560
|
super
|
|
@@ -567,7 +567,7 @@ module Sequel
|
|
|
567
567
|
im = input_identifier_meth(opts[:dataset])
|
|
568
568
|
table = SQL::Identifier.new(im.call(table_name))
|
|
569
569
|
table = SQL::QualifiedIdentifier.new(im.call(opts[:schema]), table) if opts[:schema]
|
|
570
|
-
metadata_dataset.with_sql("
|
|
570
|
+
metadata_dataset.with_sql("SHOW FULL COLUMNS FROM ?", table).map do |row|
|
|
571
571
|
extra = row.delete(:Extra)
|
|
572
572
|
if row[:primary_key] = row.delete(:Key) == 'PRI'
|
|
573
573
|
row[:auto_increment] = !!(extra.to_s =~ /auto_increment/i)
|
|
@@ -577,10 +577,14 @@ module Sequel
|
|
|
577
577
|
row[:generated] = !!(extra.to_s =~ /VIRTUAL|STORED|PERSISTENT/i)
|
|
578
578
|
end
|
|
579
579
|
row[:allow_null] = row.delete(:Null) == 'YES'
|
|
580
|
+
row[:comment] = row.delete(:Comment)
|
|
581
|
+
row[:comment] = nil if row[:comment] == ""
|
|
580
582
|
row[:default] = row.delete(:Default)
|
|
581
583
|
row[:db_type] = row.delete(:Type)
|
|
582
584
|
row[:type] = schema_column_type(row[:db_type])
|
|
583
585
|
row[:extra] = extra
|
|
586
|
+
row.delete(:Collation)
|
|
587
|
+
row.delete(:Privileges)
|
|
584
588
|
[m.call(row.delete(:Field)), row]
|
|
585
589
|
end
|
|
586
590
|
end
|
|
@@ -776,14 +780,15 @@ module Sequel
|
|
|
776
780
|
# Load the PrettyTable class, needed for explain output
|
|
777
781
|
Sequel.extension(:_pretty_table) unless defined?(Sequel::PrettyTable)
|
|
778
782
|
|
|
779
|
-
|
|
783
|
+
sql = ((opts[:extended] && (db.mariadb? || db.server_version < 50700)) ? 'EXPLAIN EXTENDED ' : 'EXPLAIN ') + select_sql
|
|
784
|
+
ds = db.send(:metadata_dataset).with_sql(sql.freeze).naked
|
|
780
785
|
rows = ds.all
|
|
781
786
|
Sequel::PrettyTable.string(rows, ds.columns)
|
|
782
787
|
end
|
|
783
788
|
|
|
784
789
|
# Return a cloned dataset which will use LOCK IN SHARE MODE to lock returned rows.
|
|
785
790
|
def for_share
|
|
786
|
-
|
|
791
|
+
cached_lock_style_dataset(:_for_share_ds, :share)
|
|
787
792
|
end
|
|
788
793
|
|
|
789
794
|
# Adds full text filter
|
|
@@ -793,7 +798,7 @@ module Sequel
|
|
|
793
798
|
|
|
794
799
|
# MySQL specific full text search syntax.
|
|
795
800
|
def full_text_sql(cols, terms, opts = OPTS)
|
|
796
|
-
terms =
|
|
801
|
+
terms = Sequel.array_or_set_join(terms, ' ') if terms.is_a?(Array) || terms.is_a?(Set)
|
|
797
802
|
SQL::PlaceholderLiteralString.new((opts[:boolean] ? MATCH_AGAINST_BOOLEAN : MATCH_AGAINST), [Array(cols), terms])
|
|
798
803
|
end
|
|
799
804
|
|
|
@@ -333,6 +333,7 @@ module Sequel
|
|
|
333
333
|
BITAND_PROC = lambda{|a, b| Sequel.lit(["CAST(BITAND(", ", ", ") AS INTEGER)"], a, b)}
|
|
334
334
|
|
|
335
335
|
include(Module.new do
|
|
336
|
+
Sequel.set_temp_name(self){"Sequel::Oracle::DatasetMethods::_SQLMethods"}
|
|
336
337
|
Dataset.def_sql_method(self, :select, %w'with select distinct columns from join where group having compounds order limit lock')
|
|
337
338
|
end)
|
|
338
339
|
|