sequel 4.12.0 → 4.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +64 -0
- data/Rakefile +3 -1
- data/bin/sequel +13 -5
- data/doc/release_notes/4.13.0.txt +169 -0
- data/doc/sql.rdoc +3 -3
- data/lib/sequel/adapters/do.rb +11 -23
- data/lib/sequel/adapters/do/mysql.rb +8 -0
- data/lib/sequel/adapters/do/postgres.rb +8 -0
- data/lib/sequel/adapters/do/{sqlite.rb → sqlite3.rb} +9 -0
- data/lib/sequel/adapters/jdbc.rb +16 -139
- data/lib/sequel/adapters/jdbc/as400.rb +9 -0
- data/lib/sequel/adapters/jdbc/cubrid.rb +9 -0
- data/lib/sequel/adapters/jdbc/db2.rb +9 -0
- data/lib/sequel/adapters/jdbc/derby.rb +9 -0
- data/lib/sequel/adapters/jdbc/{firebird.rb → firebirdsql.rb} +9 -0
- data/lib/sequel/adapters/jdbc/h2.rb +10 -0
- data/lib/sequel/adapters/jdbc/hsqldb.rb +9 -0
- data/lib/sequel/adapters/jdbc/{informix.rb → informix-sqli.rb} +9 -0
- data/lib/sequel/adapters/jdbc/{progress.rb → jdbcprogress.rb} +9 -0
- data/lib/sequel/adapters/jdbc/jtds.rb +10 -0
- data/lib/sequel/adapters/jdbc/mysql.rb +14 -0
- data/lib/sequel/adapters/jdbc/oracle.rb +9 -0
- data/lib/sequel/adapters/jdbc/postgresql.rb +9 -0
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +23 -0
- data/lib/sequel/adapters/jdbc/sqlite.rb +10 -0
- data/lib/sequel/adapters/jdbc/sqlserver.rb +10 -0
- data/lib/sequel/adapters/odbc.rb +6 -14
- data/lib/sequel/adapters/odbc/db2.rb +9 -0
- data/lib/sequel/adapters/odbc/mssql.rb +8 -0
- data/lib/sequel/adapters/odbc/progress.rb +8 -0
- data/lib/sequel/adapters/oracle.rb +1 -1
- data/lib/sequel/adapters/postgres.rb +1 -1
- data/lib/sequel/adapters/shared/firebird.rb +8 -1
- data/lib/sequel/adapters/shared/mssql.rb +68 -27
- data/lib/sequel/adapters/shared/mysql.rb +3 -5
- data/lib/sequel/adapters/shared/oracle.rb +17 -3
- data/lib/sequel/adapters/shared/postgres.rb +9 -4
- data/lib/sequel/adapters/shared/sqlanywhere.rb +6 -6
- data/lib/sequel/database/connecting.rb +38 -17
- data/lib/sequel/dataset/actions.rb +6 -2
- data/lib/sequel/dataset/graph.rb +18 -20
- data/lib/sequel/dataset/misc.rb +37 -0
- data/lib/sequel/dataset/prepared_statements.rb +1 -2
- data/lib/sequel/dataset/query.rb +1 -0
- data/lib/sequel/dataset/sql.rb +17 -10
- data/lib/sequel/extensions/dataset_source_alias.rb +90 -0
- data/lib/sequel/extensions/pg_array.rb +14 -10
- data/lib/sequel/extensions/pg_enum.rb +135 -0
- data/lib/sequel/extensions/pg_hstore.rb +4 -6
- data/lib/sequel/extensions/pg_inet.rb +4 -5
- data/lib/sequel/extensions/pg_interval.rb +3 -3
- data/lib/sequel/extensions/pg_json.rb +16 -12
- data/lib/sequel/extensions/pg_range.rb +5 -3
- data/lib/sequel/extensions/pg_row.rb +2 -2
- data/lib/sequel/extensions/round_timestamps.rb +52 -0
- data/lib/sequel/model.rb +5 -2
- data/lib/sequel/model/associations.rb +29 -3
- data/lib/sequel/model/base.rb +68 -29
- data/lib/sequel/plugins/class_table_inheritance.rb +25 -16
- data/lib/sequel/plugins/column_select.rb +57 -0
- data/lib/sequel/plugins/composition.rb +14 -16
- data/lib/sequel/plugins/dirty.rb +9 -11
- data/lib/sequel/plugins/insert_returning_select.rb +70 -0
- data/lib/sequel/plugins/instance_filters.rb +7 -9
- data/lib/sequel/plugins/lazy_attributes.rb +16 -4
- data/lib/sequel/plugins/list.rb +9 -0
- data/lib/sequel/plugins/modification_detection.rb +90 -0
- data/lib/sequel/plugins/serialization.rb +13 -15
- data/lib/sequel/plugins/serialization_modification_detection.rb +9 -9
- data/lib/sequel/plugins/single_table_inheritance.rb +3 -1
- data/lib/sequel/plugins/timestamps.rb +6 -6
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/mysql_spec.rb +7 -0
- data/spec/adapters/postgres_spec.rb +41 -0
- data/spec/bin_spec.rb +4 -1
- data/spec/core/database_spec.rb +6 -0
- data/spec/core/dataset_spec.rb +100 -90
- data/spec/core/object_graph_spec.rb +5 -0
- data/spec/extensions/class_table_inheritance_spec.rb +18 -13
- data/spec/extensions/column_select_spec.rb +108 -0
- data/spec/extensions/composition_spec.rb +20 -0
- data/spec/extensions/dataset_source_alias_spec.rb +51 -0
- data/spec/extensions/insert_returning_select_spec.rb +46 -0
- data/spec/extensions/lazy_attributes_spec.rb +24 -20
- data/spec/extensions/list_spec.rb +5 -0
- data/spec/extensions/modification_detection_spec.rb +80 -0
- data/spec/extensions/pg_enum_spec.rb +64 -0
- data/spec/extensions/pg_json_spec.rb +7 -13
- data/spec/extensions/prepared_statements_spec.rb +6 -4
- data/spec/extensions/round_timestamps_spec.rb +43 -0
- data/spec/extensions/serialization_modification_detection_spec.rb +10 -1
- data/spec/extensions/serialization_spec.rb +18 -0
- data/spec/extensions/single_table_inheritance_spec.rb +5 -0
- data/spec/extensions/timestamps_spec.rb +6 -0
- data/spec/integration/plugin_test.rb +14 -8
- data/spec/integration/prepared_statement_test.rb +12 -0
- data/spec/model/associations_spec.rb +24 -0
- data/spec/model/model_spec.rb +13 -3
- data/spec/model/record_spec.rb +24 -1
- metadata +22 -6
data/spec/model/model_spec.rb
CHANGED
@@ -824,10 +824,10 @@ describe Sequel::Model, ".[]" do
|
|
824
824
|
DB.sqls.should == ["SELECT * FROM items WHERE name = 'sharon'"]
|
825
825
|
end
|
826
826
|
|
827
|
-
it "should
|
828
|
-
@c.dataset = @c.dataset.
|
827
|
+
it "should use a qualified primary key if the dataset is joined" do
|
828
|
+
@c.dataset = @c.dataset.cross_join(:a)
|
829
829
|
@c[1].should == @c.load(:name => 'sharon', :id => 1)
|
830
|
-
DB.sqls.should == ["SELECT * FROM items
|
830
|
+
DB.sqls.should == ["SELECT * FROM items CROSS JOIN a WHERE (items.id = 1) LIMIT 1"]
|
831
831
|
end
|
832
832
|
|
833
833
|
it "should work correctly for composite primary key specified as array" do
|
@@ -905,6 +905,16 @@ describe "Model.db_schema" do
|
|
905
905
|
@c.primary_key.should == :x
|
906
906
|
end
|
907
907
|
|
908
|
+
specify "should automatically set a singular primary key even if there are specific columns selected" do
|
909
|
+
ds = @dataset.select(:a, :b, :x)
|
910
|
+
d = ds.db
|
911
|
+
def d.schema(table, *opts) [[:a, {:primary_key=>false}], [:b, {:primary_key=>false}], [:x, {:primary_key=>true}]] end
|
912
|
+
@c.primary_key.should == :id
|
913
|
+
@c.dataset = ds
|
914
|
+
@c.db_schema.should == {:a=>{:primary_key=>false}, :b=>{:primary_key=>false}, :x=>{:primary_key=>true}}
|
915
|
+
@c.primary_key.should == :x
|
916
|
+
end
|
917
|
+
|
908
918
|
specify "should automatically set the composite primary key based on the schema" do
|
909
919
|
ds = @dataset
|
910
920
|
d = ds.db
|
data/spec/model/record_spec.rb
CHANGED
@@ -57,7 +57,7 @@ describe "Model#save" do
|
|
57
57
|
ds._fetch = {:y=>2}
|
58
58
|
def ds.supports_insert_select?() true end
|
59
59
|
def ds.insert_select(hash)
|
60
|
-
|
60
|
+
with_sql_first("INSERT INTO items (y) VALUES (2) RETURNING *")
|
61
61
|
end
|
62
62
|
o = @c.new(:x => 1)
|
63
63
|
o.save
|
@@ -72,6 +72,23 @@ describe "Model#save" do
|
|
72
72
|
@c.new(:x => 1).save
|
73
73
|
end
|
74
74
|
|
75
|
+
it "should use dataset's insert_select method if the dataset uses returning, even if specific columns are selected" do
|
76
|
+
def (@c.dataset).supports_returning?(_) true end
|
77
|
+
ds = @c.dataset = @c.dataset.select(:y).returning(:y)
|
78
|
+
DB.reset
|
79
|
+
ds = @c.instance_dataset
|
80
|
+
ds._fetch = {:y=>2}
|
81
|
+
def ds.supports_insert_select?() true end
|
82
|
+
def ds.insert_select(hash)
|
83
|
+
with_sql_first("INSERT INTO items (y) VALUES (2) RETURNING y")
|
84
|
+
end
|
85
|
+
o = @c.new(:x => 1)
|
86
|
+
o.save
|
87
|
+
|
88
|
+
o.values.should == {:y=>2}
|
89
|
+
DB.sqls.should == ["INSERT INTO items (y) VALUES (2) RETURNING y"]
|
90
|
+
end
|
91
|
+
|
75
92
|
it "should use value returned by insert as the primary key and refresh the object" do
|
76
93
|
o = @c.new(:x => 11)
|
77
94
|
o.save
|
@@ -783,6 +800,12 @@ describe Sequel::Model, "#this" do
|
|
783
800
|
instance.this.sql.should == "SELECT * FROM examples WHERE (a = 3) LIMIT 1"
|
784
801
|
end
|
785
802
|
|
803
|
+
it "should use a qualified primary key if the dataset is joined" do
|
804
|
+
@example.dataset = @example.dataset.cross_join(:a)
|
805
|
+
instance = @example.load(:id => 3)
|
806
|
+
instance.this.sql.should == "SELECT * FROM examples CROSS JOIN a WHERE (examples.id = 3) LIMIT 1"
|
807
|
+
end
|
808
|
+
|
786
809
|
it "should support composite primary keys" do
|
787
810
|
@example.set_primary_key [:x, :y]
|
788
811
|
instance = @example.load(:x => 4, :y => 5)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: The Database Toolkit for Ruby
|
14
14
|
email: code@jeremyevans.net
|
@@ -129,6 +129,7 @@ extra_rdoc_files:
|
|
129
129
|
- doc/release_notes/4.10.0.txt
|
130
130
|
- doc/release_notes/4.11.0.txt
|
131
131
|
- doc/release_notes/4.12.0.txt
|
132
|
+
- doc/release_notes/4.13.0.txt
|
132
133
|
files:
|
133
134
|
- CHANGELOG
|
134
135
|
- MIT-LICENSE
|
@@ -228,6 +229,7 @@ files:
|
|
228
229
|
- doc/release_notes/4.10.0.txt
|
229
230
|
- doc/release_notes/4.11.0.txt
|
230
231
|
- doc/release_notes/4.12.0.txt
|
232
|
+
- doc/release_notes/4.13.0.txt
|
231
233
|
- doc/release_notes/4.2.0.txt
|
232
234
|
- doc/release_notes/4.3.0.txt
|
233
235
|
- doc/release_notes/4.4.0.txt
|
@@ -256,7 +258,7 @@ files:
|
|
256
258
|
- lib/sequel/adapters/do.rb
|
257
259
|
- lib/sequel/adapters/do/mysql.rb
|
258
260
|
- lib/sequel/adapters/do/postgres.rb
|
259
|
-
- lib/sequel/adapters/do/
|
261
|
+
- lib/sequel/adapters/do/sqlite3.rb
|
260
262
|
- lib/sequel/adapters/firebird.rb
|
261
263
|
- lib/sequel/adapters/ibmdb.rb
|
262
264
|
- lib/sequel/adapters/informix.rb
|
@@ -265,16 +267,16 @@ files:
|
|
265
267
|
- lib/sequel/adapters/jdbc/cubrid.rb
|
266
268
|
- lib/sequel/adapters/jdbc/db2.rb
|
267
269
|
- lib/sequel/adapters/jdbc/derby.rb
|
268
|
-
- lib/sequel/adapters/jdbc/
|
270
|
+
- lib/sequel/adapters/jdbc/firebirdsql.rb
|
269
271
|
- lib/sequel/adapters/jdbc/h2.rb
|
270
272
|
- lib/sequel/adapters/jdbc/hsqldb.rb
|
271
|
-
- lib/sequel/adapters/jdbc/informix.rb
|
273
|
+
- lib/sequel/adapters/jdbc/informix-sqli.rb
|
274
|
+
- lib/sequel/adapters/jdbc/jdbcprogress.rb
|
272
275
|
- lib/sequel/adapters/jdbc/jtds.rb
|
273
276
|
- lib/sequel/adapters/jdbc/mssql.rb
|
274
277
|
- lib/sequel/adapters/jdbc/mysql.rb
|
275
278
|
- lib/sequel/adapters/jdbc/oracle.rb
|
276
279
|
- lib/sequel/adapters/jdbc/postgresql.rb
|
277
|
-
- lib/sequel/adapters/jdbc/progress.rb
|
278
280
|
- lib/sequel/adapters/jdbc/sqlanywhere.rb
|
279
281
|
- lib/sequel/adapters/jdbc/sqlite.rb
|
280
282
|
- lib/sequel/adapters/jdbc/sqlserver.rb
|
@@ -283,7 +285,9 @@ files:
|
|
283
285
|
- lib/sequel/adapters/mysql.rb
|
284
286
|
- lib/sequel/adapters/mysql2.rb
|
285
287
|
- lib/sequel/adapters/odbc.rb
|
288
|
+
- lib/sequel/adapters/odbc/db2.rb
|
286
289
|
- lib/sequel/adapters/odbc/mssql.rb
|
290
|
+
- lib/sequel/adapters/odbc/progress.rb
|
287
291
|
- lib/sequel/adapters/openbase.rb
|
288
292
|
- lib/sequel/adapters/oracle.rb
|
289
293
|
- lib/sequel/adapters/postgres.rb
|
@@ -352,6 +356,7 @@ files:
|
|
352
356
|
- lib/sequel/extensions/core_extensions.rb
|
353
357
|
- lib/sequel/extensions/core_refinements.rb
|
354
358
|
- lib/sequel/extensions/current_datetime_timestamp.rb
|
359
|
+
- lib/sequel/extensions/dataset_source_alias.rb
|
355
360
|
- lib/sequel/extensions/date_arithmetic.rb
|
356
361
|
- lib/sequel/extensions/empty_array_ignore_nulls.rb
|
357
362
|
- lib/sequel/extensions/error_sql.rb
|
@@ -370,6 +375,7 @@ files:
|
|
370
375
|
- lib/sequel/extensions/pagination.rb
|
371
376
|
- lib/sequel/extensions/pg_array.rb
|
372
377
|
- lib/sequel/extensions/pg_array_ops.rb
|
378
|
+
- lib/sequel/extensions/pg_enum.rb
|
373
379
|
- lib/sequel/extensions/pg_hstore.rb
|
374
380
|
- lib/sequel/extensions/pg_hstore_ops.rb
|
375
381
|
- lib/sequel/extensions/pg_inet.rb
|
@@ -385,6 +391,7 @@ files:
|
|
385
391
|
- lib/sequel/extensions/pretty_table.rb
|
386
392
|
- lib/sequel/extensions/query.rb
|
387
393
|
- lib/sequel/extensions/query_literals.rb
|
394
|
+
- lib/sequel/extensions/round_timestamps.rb
|
388
395
|
- lib/sequel/extensions/ruby18_symbol_extensions.rb
|
389
396
|
- lib/sequel/extensions/schema_caching.rb
|
390
397
|
- lib/sequel/extensions/schema_dumper.rb
|
@@ -418,6 +425,7 @@ files:
|
|
418
425
|
- lib/sequel/plugins/boolean_readers.rb
|
419
426
|
- lib/sequel/plugins/caching.rb
|
420
427
|
- lib/sequel/plugins/class_table_inheritance.rb
|
428
|
+
- lib/sequel/plugins/column_select.rb
|
421
429
|
- lib/sequel/plugins/composition.rb
|
422
430
|
- lib/sequel/plugins/constraint_validations.rb
|
423
431
|
- lib/sequel/plugins/dataset_associations.rb
|
@@ -428,6 +436,7 @@ files:
|
|
428
436
|
- lib/sequel/plugins/force_encoding.rb
|
429
437
|
- lib/sequel/plugins/hook_class_methods.rb
|
430
438
|
- lib/sequel/plugins/input_transformer.rb
|
439
|
+
- lib/sequel/plugins/insert_returning_select.rb
|
431
440
|
- lib/sequel/plugins/instance_filters.rb
|
432
441
|
- lib/sequel/plugins/instance_hooks.rb
|
433
442
|
- lib/sequel/plugins/json_serializer.rb
|
@@ -435,6 +444,7 @@ files:
|
|
435
444
|
- lib/sequel/plugins/list.rb
|
436
445
|
- lib/sequel/plugins/many_through_many.rb
|
437
446
|
- lib/sequel/plugins/many_to_one_pk_lookup.rb
|
447
|
+
- lib/sequel/plugins/modification_detection.rb
|
438
448
|
- lib/sequel/plugins/mssql_optimistic_locking.rb
|
439
449
|
- lib/sequel/plugins/nested_attributes.rb
|
440
450
|
- lib/sequel/plugins/optimistic_locking.rb
|
@@ -507,6 +517,7 @@ files:
|
|
507
517
|
- spec/extensions/boolean_readers_spec.rb
|
508
518
|
- spec/extensions/caching_spec.rb
|
509
519
|
- spec/extensions/class_table_inheritance_spec.rb
|
520
|
+
- spec/extensions/column_select_spec.rb
|
510
521
|
- spec/extensions/columns_introspection_spec.rb
|
511
522
|
- spec/extensions/composition_spec.rb
|
512
523
|
- spec/extensions/connection_validator_spec.rb
|
@@ -515,6 +526,7 @@ files:
|
|
515
526
|
- spec/extensions/core_refinements_spec.rb
|
516
527
|
- spec/extensions/current_datetime_timestamp_spec.rb
|
517
528
|
- spec/extensions/dataset_associations_spec.rb
|
529
|
+
- spec/extensions/dataset_source_alias_spec.rb
|
518
530
|
- spec/extensions/date_arithmetic_spec.rb
|
519
531
|
- spec/extensions/defaults_setter_spec.rb
|
520
532
|
- spec/extensions/dirty_spec.rb
|
@@ -531,6 +543,7 @@ files:
|
|
531
543
|
- spec/extensions/hook_class_methods_spec.rb
|
532
544
|
- spec/extensions/inflector_spec.rb
|
533
545
|
- spec/extensions/input_transformer_spec.rb
|
546
|
+
- spec/extensions/insert_returning_select_spec.rb
|
534
547
|
- spec/extensions/instance_filters_spec.rb
|
535
548
|
- spec/extensions/instance_hooks_spec.rb
|
536
549
|
- spec/extensions/json_serializer_spec.rb
|
@@ -540,6 +553,7 @@ files:
|
|
540
553
|
- spec/extensions/many_through_many_spec.rb
|
541
554
|
- spec/extensions/meta_def_spec.rb
|
542
555
|
- spec/extensions/migration_spec.rb
|
556
|
+
- spec/extensions/modification_detection_spec.rb
|
543
557
|
- spec/extensions/mssql_optimistic_locking_spec.rb
|
544
558
|
- spec/extensions/named_timezones_spec.rb
|
545
559
|
- spec/extensions/nested_attributes_spec.rb
|
@@ -549,6 +563,7 @@ files:
|
|
549
563
|
- spec/extensions/pg_array_associations_spec.rb
|
550
564
|
- spec/extensions/pg_array_ops_spec.rb
|
551
565
|
- spec/extensions/pg_array_spec.rb
|
566
|
+
- spec/extensions/pg_enum_spec.rb
|
552
567
|
- spec/extensions/pg_hstore_ops_spec.rb
|
553
568
|
- spec/extensions/pg_hstore_spec.rb
|
554
569
|
- spec/extensions/pg_inet_spec.rb
|
@@ -571,6 +586,7 @@ files:
|
|
571
586
|
- spec/extensions/query_literals_spec.rb
|
572
587
|
- spec/extensions/query_spec.rb
|
573
588
|
- spec/extensions/rcte_tree_spec.rb
|
589
|
+
- spec/extensions/round_timestamps_spec.rb
|
574
590
|
- spec/extensions/schema_caching_spec.rb
|
575
591
|
- spec/extensions/schema_dumper_spec.rb
|
576
592
|
- spec/extensions/schema_spec.rb
|