sequel 5.80.0 → 5.92.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/bin/sequel +9 -4
- data/lib/sequel/adapters/ado.rb +1 -1
- data/lib/sequel/adapters/ibmdb.rb +1 -0
- data/lib/sequel/adapters/jdbc/db2.rb +2 -2
- data/lib/sequel/adapters/jdbc/derby.rb +3 -3
- data/lib/sequel/adapters/jdbc/h2.rb +2 -2
- 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 +1 -1
- data/lib/sequel/adapters/jdbc/oracle.rb +5 -5
- 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 +2 -2
- data/lib/sequel/adapters/jdbc/sqlserver.rb +2 -2
- data/lib/sequel/adapters/jdbc.rb +8 -8
- data/lib/sequel/adapters/mysql2.rb +8 -1
- data/lib/sequel/adapters/shared/access.rb +1 -0
- data/lib/sequel/adapters/shared/db2.rb +1 -1
- data/lib/sequel/adapters/shared/mssql.rb +18 -5
- data/lib/sequel/adapters/shared/mysql.rb +8 -4
- data/lib/sequel/adapters/shared/oracle.rb +1 -0
- data/lib/sequel/adapters/shared/postgres.rb +106 -13
- data/lib/sequel/adapters/shared/sqlite.rb +4 -2
- data/lib/sequel/adapters/sqlite.rb +4 -0
- data/lib/sequel/adapters/trilogy.rb +1 -2
- data/lib/sequel/connection_pool/sharded_threaded.rb +26 -10
- data/lib/sequel/connection_pool/threaded.rb +26 -10
- data/lib/sequel/connection_pool.rb +2 -2
- data/lib/sequel/core.rb +15 -0
- data/lib/sequel/database/connecting.rb +20 -26
- data/lib/sequel/database/dataset_defaults.rb +3 -3
- data/lib/sequel/database/misc.rb +46 -10
- data/lib/sequel/database/query.rb +11 -11
- data/lib/sequel/database/schema_generator.rb +8 -0
- data/lib/sequel/database/schema_methods.rb +17 -1
- data/lib/sequel/dataset/actions.rb +9 -1
- data/lib/sequel/dataset/deprecated_singleton_class_methods.rb +1 -1
- data/lib/sequel/dataset/prepared_statements.rb +2 -1
- data/lib/sequel/dataset/query.rb +9 -5
- data/lib/sequel/dataset/sql.rb +25 -5
- data/lib/sequel/extensions/caller_logging.rb +2 -0
- data/lib/sequel/extensions/connection_validator.rb +15 -10
- data/lib/sequel/extensions/dataset_run.rb +41 -0
- data/lib/sequel/extensions/migration.rb +23 -3
- data/lib/sequel/extensions/null_dataset.rb +2 -2
- data/lib/sequel/extensions/pg_auto_parameterize.rb +1 -1
- data/lib/sequel/extensions/pg_auto_parameterize_in_array.rb +93 -10
- data/lib/sequel/extensions/pg_enum.rb +3 -3
- data/lib/sequel/extensions/pg_json_ops.rb +642 -9
- data/lib/sequel/extensions/pg_row.rb +3 -1
- data/lib/sequel/extensions/pg_schema_caching.rb +90 -0
- data/lib/sequel/extensions/provenance.rb +2 -0
- 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 +16 -4
- data/lib/sequel/extensions/sqlite_json_ops.rb +1 -1
- data/lib/sequel/extensions/stdio_logger.rb +48 -0
- data/lib/sequel/extensions/string_agg.rb +17 -4
- data/lib/sequel/extensions/temporarily_release_connection.rb +178 -0
- data/lib/sequel/extensions/virtual_row_method_block.rb +1 -0
- data/lib/sequel/model/associations.rb +28 -3
- data/lib/sequel/model/base.rb +67 -18
- data/lib/sequel/plugins/association_pks.rb +1 -1
- data/lib/sequel/plugins/column_encryption.rb +1 -1
- data/lib/sequel/plugins/composition.rb +1 -1
- data/lib/sequel/plugins/defaults_setter.rb +16 -4
- data/lib/sequel/plugins/enum.rb +1 -1
- data/lib/sequel/plugins/forbid_lazy_load.rb +14 -1
- data/lib/sequel/plugins/input_transformer.rb +1 -1
- data/lib/sequel/plugins/inspect_pk.rb +44 -0
- data/lib/sequel/plugins/instance_filters.rb +4 -1
- data/lib/sequel/plugins/inverted_subsets.rb +1 -0
- data/lib/sequel/plugins/lazy_attributes.rb +1 -1
- data/lib/sequel/plugins/nested_attributes.rb +10 -5
- data/lib/sequel/plugins/optimistic_locking.rb +2 -0
- data/lib/sequel/plugins/paged_operations.rb +5 -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/rcte_tree.rb +1 -1
- data/lib/sequel/plugins/serialization.rb +11 -5
- data/lib/sequel/plugins/sql_comments.rb +7 -2
- 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 +263 -0
- data/lib/sequel/plugins/tactical_eager_loading.rb +6 -2
- data/lib/sequel/plugins/validate_associated.rb +1 -1
- data/lib/sequel/sql.rb +16 -6
- data/lib/sequel/version.rb +1 -1
- metadata +12 -234
- data/CHANGELOG +0 -1355
- 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 -102
- 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 -436
- 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.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 -190
- 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
data/doc/release_notes/5.6.0.txt
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
= Improvements
|
2
|
-
|
3
|
-
* Running migrations using one of the included migrators on separate
|
4
|
-
Database objects in separate threads simultaneously is now
|
5
|
-
supported. Previously, the migrators were not thread-safe.
|
6
|
-
|
7
|
-
* On Ruby 2.5+, :db_type entries in the schema hashes are now deduped
|
8
|
-
for a slight memory savings when using many columns with the same
|
9
|
-
database type.
|
10
|
-
|
11
|
-
* The schema_caching extension now freezes string values in the
|
12
|
-
resulting hashes, just as the default schema parsing code started
|
13
|
-
doing in 5.5.0.
|
14
|
-
|
15
|
-
* The schema_caching extension now supports the :callable_default
|
16
|
-
schema values used by the pg_json, pg_array, and pg_hstore
|
17
|
-
extensions, by removing the entry before caching and resetting it
|
18
|
-
after restoring the cache.
|
19
|
-
|
20
|
-
* Identifier mangling rules are now respected when renaming columns on
|
21
|
-
Microsoft SQL Server.
|
22
|
-
|
23
|
-
= Backwards Compatibility
|
24
|
-
|
25
|
-
* The migrator internals were modified in order to support
|
26
|
-
thread-safety. The private Migrator#remove_migration_classes
|
27
|
-
method has been removed, and #load_migration_file now returns the
|
28
|
-
migration object/class instead of populating Migration.descendants.
|
29
|
-
Migration.descendants is now only used for temporary storage, and
|
30
|
-
will no longer contain all migration objects/classes used by the
|
31
|
-
migrator.
|
@@ -1,22 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* The date_arithmetic extension now supports arbitrary expressions
|
4
|
-
as interval values on PostgreSQL 9.4+. Previously, only integers
|
5
|
-
were supported for the interval values.
|
6
|
-
|
7
|
-
= Other Improvements
|
8
|
-
|
9
|
-
* Most Kernel#respond_to? calls have been converted to equivalent
|
10
|
-
defined? calls for better performance. defined? is a keyword
|
11
|
-
and is about 50% faster for the same behavior.
|
12
|
-
|
13
|
-
* The is_distinct_from extension now supports the IS DISTINCT FROM
|
14
|
-
syntax natively on SQLite 3.39+, instead of emulating it.
|
15
|
-
|
16
|
-
* HAVING without GROUP BY is now supported on SQLite 3.39+.
|
17
|
-
|
18
|
-
* Coverage testing has been significantly expanded. Previously,
|
19
|
-
the core, model, plugin, and extension code had 100% line/branch
|
20
|
-
coverage. 100% line/branch coverage has been added for the
|
21
|
-
core extensions, bin/sequel, and the postgres adapter with the
|
22
|
-
pg driver.
|
@@ -1,43 +0,0 @@
|
|
1
|
-
= Improvements
|
2
|
-
|
3
|
-
* When typecasting strings to other types, Sequel::Database will now
|
4
|
-
by default not typecast strings that are much longer than expected
|
5
|
-
for the underlying type. Depending on the underlying type, there
|
6
|
-
is a limit of either 100 or 1000 bytes on the input string. This
|
7
|
-
avoids potential performance issues when trying to convert
|
8
|
-
arbitrary sized user input to specific types.
|
9
|
-
|
10
|
-
* The respond_to? to defined? change made in 5.60.0 was reverted in
|
11
|
-
5.60.1 as it broke cases on Ruby < 3 where the object had an unused
|
12
|
-
refinement that added the method.
|
13
|
-
|
14
|
-
* When typecasting strings to integer, strings such as -0xa are now
|
15
|
-
treated as negative hexidecimal strings, similar to how 0xa is
|
16
|
-
treated as a positive hexidecimal string.
|
17
|
-
|
18
|
-
* Database#foreign_key_list now returns results for partitioned
|
19
|
-
tables on PostgreSQL 11+.
|
20
|
-
|
21
|
-
* Timestamps before the date of calendar reform are now handled
|
22
|
-
correctly by the pg_extended_date_support extension when using
|
23
|
-
Ruby 3.2 preview 2+.
|
24
|
-
|
25
|
-
= Backwards Compatibility
|
26
|
-
|
27
|
-
* The change to not typecast strings that are too long can break
|
28
|
-
backwards compatibility for applications that expect typecasting
|
29
|
-
for input beyond Sequel's limits. You can disable the string
|
30
|
-
bytesize checking by setting:
|
31
|
-
|
32
|
-
DB.check_string_typecast_bytesize = false
|
33
|
-
|
34
|
-
or by passing the check_string_typecast_bytesize: false option when
|
35
|
-
creating the Database instance.
|
36
|
-
|
37
|
-
* Code to workaround a bug in JRuby 9.2.0.0 has been removed from the
|
38
|
-
pg_extended_date_support extension. Users of the extension should
|
39
|
-
upgrade to a newer JRuby version.
|
40
|
-
|
41
|
-
* The is_json and is_not_json methods have been removed from the
|
42
|
-
pg_json_ops extension, as the underlying support was removed in
|
43
|
-
PostgreSQL 15 beta 4.
|
@@ -1,132 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* The pg_auto_parameterize extension for automatically using bound
|
4
|
-
variables when using postgres adapter with the pg driver has been
|
5
|
-
added back to Sequel. This extension was originally added in Sequel
|
6
|
-
3.34.0, but was removed in 4.0.0 due to the many corner cases it
|
7
|
-
had. Almost all of the corner cases have now been fixed, and
|
8
|
-
the extension is now recommended for production use. Compared
|
9
|
-
to the original version in Sequel 3, the reintroduced version
|
10
|
-
of the extension includes the following changes:
|
11
|
-
|
12
|
-
* Handles integers used in LIMIT/ORDER
|
13
|
-
* Respects explicit CASTs
|
14
|
-
* Tries to convert column IN (int, ...) into column = ANY($) with an
|
15
|
-
array parameter
|
16
|
-
* Uses the same parameter for the same object used more than once in
|
17
|
-
a query
|
18
|
-
* Uses parameters when inserting multiple rows via Dataset#import
|
19
|
-
* Supports automatically parameterizing all of the
|
20
|
-
PostgreSQL-specific types that Sequel ships support for in pg_*
|
21
|
-
extensions (though some values of those types may not support
|
22
|
-
automatic parameterization).
|
23
|
-
* Supports skipping auto parameterization for specific values.
|
24
|
-
|
25
|
-
Automatic parameterization is generally slower than Sequel's default
|
26
|
-
behavior, since some optimizations Sequel uses by default do not
|
27
|
-
currently support automatic parameterization.
|
28
|
-
|
29
|
-
Applications may need changes to work correctly with the
|
30
|
-
pg_auto_parameterize extension, such as the addition of explicit
|
31
|
-
casts. Please read the extension documentation for more details.
|
32
|
-
|
33
|
-
* Integer column schema entries now include :min_value and :max_value
|
34
|
-
entries on most databases, indicating the minimum and maximum values
|
35
|
-
supported for the column.
|
36
|
-
|
37
|
-
The validation_helpers plugin now has validates_max_value and
|
38
|
-
validates_min_value for testing the column value is not greater
|
39
|
-
than the given maximum value and not less than the given minimum
|
40
|
-
value, respectively.
|
41
|
-
|
42
|
-
The auto_validations plugin now automatically uses the :min_value
|
43
|
-
and :max_value column schema entries with the new validation_helpers
|
44
|
-
methods to validate that the column values for integer columns are
|
45
|
-
in the allowed range.
|
46
|
-
|
47
|
-
* A primary_key_lookup_check_values plugin has been added for
|
48
|
-
automatically typecasting and checking the primary key values are
|
49
|
-
in the allowed range (given by :min_value and :max_value column
|
50
|
-
schema entries) during lookup. If typecasting fails or the value
|
51
|
-
is outside the allowed range, the primary key lookup will return
|
52
|
-
nil without issuing a query (or will raise a NoMatchingRow error
|
53
|
-
if using with_pk!).
|
54
|
-
|
55
|
-
Note that this can change behavior in some cases if you are
|
56
|
-
passing filter conditions during lookup instead of passing primary
|
57
|
-
key values. The plugin tries to support most common filter
|
58
|
-
conditions, but there are still cases that will break.
|
59
|
-
|
60
|
-
* Sequel now supports shard-specific :after_connect and :connect_sqls
|
61
|
-
Database options, allowing you to customize behavior for specific
|
62
|
-
shards:
|
63
|
-
|
64
|
-
DB = Sequel.connect('url', servers: {
|
65
|
-
:shard1 => {host: '...', after_connect: proc{|conn|}},
|
66
|
-
:shard2 => {host: '...', connect_sqls: ['...']},
|
67
|
-
})
|
68
|
-
|
69
|
-
Note that these shard-specific options will not be respected if you
|
70
|
-
are calling after_connect= or connect_sqls= on the Database's
|
71
|
-
connection pool.
|
72
|
-
|
73
|
-
= Other Improvements
|
74
|
-
|
75
|
-
* A Sequel::Postgres::IntegerOutsideBigintRange exception will now be
|
76
|
-
raised if trying to literalize an integer outside PostgreSQL bigint
|
77
|
-
range, to avoid PostgreSQL treating the integer as a numeric type
|
78
|
-
and not respecting indexes on the related column.
|
79
|
-
|
80
|
-
A pg_extended_integer_support extension has been added for
|
81
|
-
customizing the behavior when literalizing an integer outside
|
82
|
-
PostgreSQL bigint range, either quoting it or getting the
|
83
|
-
historical behavior of using it directly in the query.
|
84
|
-
|
85
|
-
* Dataset#import and #multi_insert no longer use transactions when
|
86
|
-
they only run a single query.
|
87
|
-
|
88
|
-
* Fractional seconds in timestamps are now respected in the
|
89
|
-
named_timezones extension.
|
90
|
-
|
91
|
-
* Using hstore[] types as bound variables now works on PostgreSQL.
|
92
|
-
|
93
|
-
* Using BC dates and timestamps in bound variables now works on
|
94
|
-
PostgreSQL.
|
95
|
-
|
96
|
-
* A corner case has been fixed in eager loading where the window
|
97
|
-
function eager limit strategy would be used without removing the
|
98
|
-
row_number entries from the result.
|
99
|
-
|
100
|
-
* The shared postgres adapter now caches reflection datasets, speeding
|
101
|
-
up Database#indexes and similar methods.
|
102
|
-
|
103
|
-
* The mock postgres adapter now assumes PostgreSQL 15 instead of
|
104
|
-
PostgreSQL 14 by default.
|
105
|
-
|
106
|
-
= Backwards Compatibility
|
107
|
-
|
108
|
-
* If you are using Ruby integers outside PostgreSQL bigint range when
|
109
|
-
dealing with PostgreSQL numeric column values, this version may
|
110
|
-
not be compatible. It is recommended you explicitly convert the
|
111
|
-
Ruby integers to BigDecimal objects if you are using them for
|
112
|
-
numeric column values. You can also use the
|
113
|
-
pg_extended_integer_support extension introduced in this version.
|
114
|
-
|
115
|
-
= Workaround for Older Versions
|
116
|
-
|
117
|
-
* If you cannot upgrade to Sequel 5.62.0, but still want to avoid the
|
118
|
-
problems that come from using literal large integers on PostgreSQL,
|
119
|
-
you can use the following code, where DB is your Sequel::Database
|
120
|
-
object:
|
121
|
-
|
122
|
-
DB.extend_datasets do
|
123
|
-
def literal_integer(v)
|
124
|
-
if v > 9223372036854775807 || v < -9223372036854775808
|
125
|
-
raise Sequel::InvalidValue, "PostgreSQL int too large: #{v}"
|
126
|
-
end
|
127
|
-
super
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
This workaround should work all the way back to Sequel 3.29.0,
|
132
|
-
released in November 2011.
|
@@ -1,33 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* On Ruby 3.2, the pool_class: :timed_queue Database option can now
|
4
|
-
be used to use an alternative connection pool that stores
|
5
|
-
connections in a queue, and uses the new Queue#pop :timeout option
|
6
|
-
in Ruby 3.2 to implement the pool timeout. This new connection
|
7
|
-
pool is simpler than the default connection pool. It is not yet
|
8
|
-
the default connection pool on Ruby 3.2, but it may become the
|
9
|
-
default in a later version. Users of Ruby 3.2 are encouraged to
|
10
|
-
try out the pool_class: :timed_queue Database option and provide
|
11
|
-
feedback on how it works in their application.
|
12
|
-
|
13
|
-
= Other Improvements
|
14
|
-
|
15
|
-
* The tactical_eager_loading plugin now works in combination with the
|
16
|
-
single_table_inheritance and class_table_inheritance plugins, when
|
17
|
-
loading an association only defined in a specific subclass.
|
18
|
-
Previously, eager loading would be skipped in such a case. Now,
|
19
|
-
an eager load will be attempted for all instances supporting the
|
20
|
-
association.
|
21
|
-
|
22
|
-
* The validate_associated plugin now avoids database type errors for
|
23
|
-
non-integer association keys. In cases where the associated object
|
24
|
-
doesn't have a value for the associated key, and the current object
|
25
|
-
does not have a key value that can be set in the associated object,
|
26
|
-
validation errors in the associated object related to the associated
|
27
|
-
key will be ignored.
|
28
|
-
|
29
|
-
* Thread-keyed connection pool hashes now use compare_by_identity for
|
30
|
-
better performance.
|
31
|
-
|
32
|
-
* The JRuby workaround in the named_timezones extension is no longer
|
33
|
-
used on JRuby 9.3.9.0+, as JRuby fixed the related bug.
|
@@ -1,50 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* A :graph_use_association_block association option has been added,
|
4
|
-
which makes eager_graph use the association block (as eager does),
|
5
|
-
generally resulting in a JOIN to a subquery:
|
6
|
-
|
7
|
-
Artist.one_to_many :tracks, graph_use_association_block: true do |ds|
|
8
|
-
ds.where(foo: 3)
|
9
|
-
end
|
10
|
-
Artist.eager_graph(:tracks)
|
11
|
-
# SELECT albums.id, tracks.id AS tracks_id, tracks.album_id
|
12
|
-
# FROM albums
|
13
|
-
# LEFT OUTER JOIN (SELECT * FROM tracks WHERE (foo = 3)) AS tracks
|
14
|
-
# ON (tracks.album_id = albums.id)
|
15
|
-
|
16
|
-
Assuming that the database can optimize the query correctly, using
|
17
|
-
the :graph_use_association_block option is probably simpler than
|
18
|
-
than using other :graph_* options to duplicate the conditions added
|
19
|
-
by the association block.
|
20
|
-
|
21
|
-
* Numeric/Decimal column schema entries now include :min_value and
|
22
|
-
:max_value entries on most databases, indicating the minimum and
|
23
|
-
maximum values supported for the column. Similar to the support
|
24
|
-
for integer columns added in 5.62.0, this allows the
|
25
|
-
auto_validations plugin to automatically validate the values of
|
26
|
-
the columns are in the allowed range.
|
27
|
-
|
28
|
-
= Other Improvements
|
29
|
-
|
30
|
-
* many_through_{one,many} associations now support eager_graph
|
31
|
-
callbacks.
|
32
|
-
|
33
|
-
* The :db_type column schema entries on SQLAnywhere now include
|
34
|
-
precision/scale information, to work with the numeric/decimal
|
35
|
-
column min_value/max_value support.
|
36
|
-
|
37
|
-
* The oracle adapter now includes a :column_size column schema
|
38
|
-
entry containing the precision of the columns, to work with the
|
39
|
-
numeric/decimal column min_value/max_value support.
|
40
|
-
|
41
|
-
= Backwards Compatibility
|
42
|
-
|
43
|
-
* The private Database#column_schema_integer_min_max_values method
|
44
|
-
added in 5.62.0 now takes a column schema hash instead of a
|
45
|
-
database type string.
|
46
|
-
|
47
|
-
* Code that previously looked at the :db_type column schema entry on
|
48
|
-
SQLAnywhere should be updated to look at the :domain_name entry, and
|
49
|
-
code that looked at the :domain_name_with_size entry should be
|
50
|
-
updated to look at the :db_type entry.
|
@@ -1,21 +0,0 @@
|
|
1
|
-
= Improvements
|
2
|
-
|
3
|
-
* The pg_auto_parameterize extension now uses a modified placeholder
|
4
|
-
literalizer for speeding up the generation of SQL queries in the same
|
5
|
-
cases where a standard dataset would use a placeholder literalizer.
|
6
|
-
This can provide a 4% speedup for simple queries, with greater
|
7
|
-
speedups for more complex queries.
|
8
|
-
|
9
|
-
* Database#indexes now returns indexes for partitioned tables on
|
10
|
-
PostgreSQL 11+.
|
11
|
-
|
12
|
-
* MySQL versions not supporting CHECK constraints no longer include
|
13
|
-
:min_value/:max_value schema entries for decimal/numeric columns.
|
14
|
-
|
15
|
-
= Backwards Compatibility
|
16
|
-
|
17
|
-
* The Dataset::PlaceholderLiterlizer::Record.loader API has changed,
|
18
|
-
it now accepts the Dataset::PlaceholderLiterlizer class to use as
|
19
|
-
the first argument. This makes it easier to create
|
20
|
-
Dataset::PlaceholderLiterlizer subclasses, such as the one now used
|
21
|
-
by the pg_auto_parameterize extension.
|
@@ -1,24 +0,0 @@
|
|
1
|
-
= Improvements
|
2
|
-
|
3
|
-
* Dataset#empty? now correctly handles datasets using custom SQL or
|
4
|
-
Dataset#values where the first value in the first row is NULL.
|
5
|
-
|
6
|
-
* Dataset#count without an argument or block now works correctly on
|
7
|
-
Microsoft SQL Server when using custom SQL that uses ORDER BY.
|
8
|
-
|
9
|
-
* Dataset#count now works correctly for datasets using Dataset#values.
|
10
|
-
|
11
|
-
* Sequel now recognizes an additional SQLite constraint violation
|
12
|
-
error that occurs with recent versions of amalgalite.
|
13
|
-
|
14
|
-
* Dataset#values will now raise an exception when called with an empty
|
15
|
-
array. Previously, an exception would not be raised until the query
|
16
|
-
was sent to the database.
|
17
|
-
|
18
|
-
= Backwards Compatibility
|
19
|
-
|
20
|
-
* The changes to make Dataset#empty? and #count work with custom SQL
|
21
|
-
on Microsoft SQL Server now result in running the custom SQL, which
|
22
|
-
could result in worse performance than in previous versions. You can
|
23
|
-
wrap such datasets with Dataset#from_self manually to restore the
|
24
|
-
previous behavior.
|
@@ -1,32 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* A set_literalizer extension has been added, for treating Set
|
4
|
-
instances in datasets similar to Array instances:
|
5
|
-
|
6
|
-
DB.extension :set_literalizer
|
7
|
-
DB[:table].where(column: Set.new([1, 2, 3]))
|
8
|
-
# SELECT FROM table WHERE (column IN (1, 2, 3))
|
9
|
-
|
10
|
-
= Improvements
|
11
|
-
|
12
|
-
* Sequel now avoids the use of singleton classes for datasets on Ruby
|
13
|
-
2.4+, instead creating a regular subclass whenever a dataset would
|
14
|
-
be extended via #extension or #with_extend. This significantly
|
15
|
-
improves performance, up to 20-40% for common dataset usage,
|
16
|
-
because it avoids creating new singleton classes for every dataset
|
17
|
-
clone, and it allows for cached method lookup.
|
18
|
-
|
19
|
-
* Database#tables and #views now support a :qualify option on Microsoft
|
20
|
-
SQL Server to returned qualified identifiers.
|
21
|
-
|
22
|
-
* The schema_dumper extension can now dump tables in non-default schemas
|
23
|
-
when using Microsoft SQL Server.
|
24
|
-
|
25
|
-
* The schema_dumper extension now correctly dumps string column sizes
|
26
|
-
when using Microsoft SQL Server.
|
27
|
-
|
28
|
-
= Backwards Compatibility
|
29
|
-
|
30
|
-
* Calling Sequel::Dataset.register_extension where the second argument
|
31
|
-
is not a module now issues a deprecation warning. Support for this
|
32
|
-
will be removed in Sequel 6.
|
@@ -1,61 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* On PostgreSQL 9.6+, date, timestamp, and timestamptz columns now
|
4
|
-
have min_value and max_value column schema entries, allowing the
|
5
|
-
auto_validations plugin to automatically enforce minimum and
|
6
|
-
maximum values for these column types, raising a validation error
|
7
|
-
before saving, instead of database error when the query is sent
|
8
|
-
to the database.
|
9
|
-
|
10
|
-
* A validation_helpers_generic_type_messages plugin has been added,
|
11
|
-
which improves the default type validation error messages in
|
12
|
-
validation_helpers. This change was not made directly to
|
13
|
-
validation_helpers for backwards compatibility reasons, but will
|
14
|
-
probably become the default behavior in Sequel 6. Some examples
|
15
|
-
of the improvements:
|
16
|
-
|
17
|
-
# :blob type
|
18
|
-
# validation_helpers default: "value is not a valid sequel::sql::blob"
|
19
|
-
# with this plugin: "value is not a blob"
|
20
|
-
|
21
|
-
# :boolean type
|
22
|
-
# validation_helpers default: "value is not a valid trueclass or falseclass"
|
23
|
-
# with this plugin: "value is not true or false"
|
24
|
-
|
25
|
-
# :datetime type
|
26
|
-
# validation_helpers default: "value is not a valid time or datetime"
|
27
|
-
# with this plugin: "value is not a valid timestamp"
|
28
|
-
|
29
|
-
# custom/database-specific types
|
30
|
-
# validation_helpers default: "value is not a valid sequel::class_name"
|
31
|
-
# with this plugin: "value is not the expected type"
|
32
|
-
|
33
|
-
= Improvements
|
34
|
-
|
35
|
-
* The constraint_validations plugin no longer raises validation
|
36
|
-
errors for missing columns that have a default value. If a column
|
37
|
-
is missing but has a default value, we can assume the default
|
38
|
-
value is valid. Additionally, the constraint validations are now
|
39
|
-
based on the underlying column value and not any deserialized
|
40
|
-
value, so that the validation matches the constraint.
|
41
|
-
|
42
|
-
* On PostgreSQL, normal type name parsing is skipped for enum,
|
43
|
-
array, composite, range, and multirange types, ensuring that
|
44
|
-
such types will not be treated incorrectly based on their
|
45
|
-
type name.
|
46
|
-
|
47
|
-
* The pg_extended_date_support extension now works correctly with
|
48
|
-
the jdbc/postgresql adapter if there is already an entry in the
|
49
|
-
oid_convertor_map for the timestamp and timestamptz types.
|
50
|
-
|
51
|
-
= Backwards Compatibility
|
52
|
-
|
53
|
-
* Database#schema_column_type is no longer called for all columns
|
54
|
-
on PostgreSQL when parsing schema. Enum, array, composite, range,
|
55
|
-
and multirange types each have their own separate type parsing
|
56
|
-
method. So if you were overriding Database#schema_column_type to
|
57
|
-
implement custom column schema parsing, you may need to adjust
|
58
|
-
your code.
|
59
|
-
|
60
|
-
* The Sequel::Postgres::ExtendedDateSupport::DATE_YEAR_1 constant
|
61
|
-
has been removed.
|
@@ -1,26 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* An adapter has been added for the trilogy MySQL driver. One large
|
4
|
-
advantage over mysql2 is that trilogy does not require any MySQL
|
5
|
-
client libraries installed on the machine. The trilogy adapter
|
6
|
-
has basically the same issues/skipped specs as the mysql2 adapter,
|
7
|
-
but it also does not support an application_timezone different
|
8
|
-
than the database_timezone.
|
9
|
-
|
10
|
-
* Model dataset modules now have a model accessor, allowing for
|
11
|
-
code such as:
|
12
|
-
|
13
|
-
class Foo < Sequel::Model
|
14
|
-
dataset_module do
|
15
|
-
where :kept, Sequel[model.table_name][:discarded_at] => nil
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
= Improvements
|
20
|
-
|
21
|
-
* The mysql adapter now works with ruby-mysql 4 (the pure-ruby
|
22
|
-
MySQL driver). Note that multi-results support does not work
|
23
|
-
with ruby-mysql 4 (it doesn't work with mysql2, trilogy, or
|
24
|
-
other Sequel adapters in general).
|
25
|
-
|
26
|
-
* Warnings for unsupported flags are now avoided on ruby-mysql 3.
|
data/doc/release_notes/5.7.0.txt
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* An integer64 extension has been added, which treats the Integer
|
4
|
-
class as a generic 64-bit integer type. Sequel's default behavior
|
5
|
-
for Integer is to use the integer type, which on most databases
|
6
|
-
is a 32-bit type.
|
7
|
-
|
8
|
-
This affects all internal use of the Integer class as a generic
|
9
|
-
database type, so that methods like primary_key and foreign_key
|
10
|
-
also default to using a 64-bit integer type when using this
|
11
|
-
extension.
|
12
|
-
|
13
|
-
* When using PostgreSQL 10+, you can use the :identity option when
|
14
|
-
creating columns to create identity columns:
|
15
|
-
|
16
|
-
DB.create_table(:table){Integer :id, identity: true}
|
17
|
-
# CREATE TABLE "table" ("id" integer GENERATED BY DEFAULT AS IDENTITY)
|
18
|
-
|
19
|
-
If you want to disallow using a user provided value when inserting,
|
20
|
-
or updating you can use a value of :always:
|
21
|
-
|
22
|
-
DB.create_table(:table){Integer :id, identity: :always}
|
23
|
-
# CREATE TABLE "table" ("id" integer GENERATED ALWAYS AS IDENTITY)
|
24
|
-
|
25
|
-
* Database#convert_serial_to_identity has been added on PostgreSQL 10.2+.
|
26
|
-
This method can convert existing serial columns to identity columns
|
27
|
-
in most cases, but it currently requires superuser permissions as it
|
28
|
-
modifies the system tables directly.
|
29
|
-
|
30
|
-
* Dataset#overriding_system_value and #overriding_user_value are
|
31
|
-
now supported on PostgreSQL to work with identity columns. You can
|
32
|
-
use #overriding_system_value to force the use of a user provided
|
33
|
-
value for identity columns that are GENERATED ALWAYS, and you can
|
34
|
-
use #overriding_user_value to ignore any user value for identity
|
35
|
-
columns and always use the next entry in the sequence.
|
36
|
-
|
37
|
-
= Other Improvements
|
38
|
-
|
39
|
-
* On PostgreSQL 10.2+, identity columns are now used instead of serial
|
40
|
-
columns as the default for auto incrementing primary keys:
|
41
|
-
|
42
|
-
DB.create_table(:table){primary_key :id}
|
43
|
-
|
44
|
-
# Sequel 5.7.0+ and PostgreSQL 10.2+
|
45
|
-
# CREATE TABLE "table" ("id" integer
|
46
|
-
# GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY)
|
47
|
-
|
48
|
-
# Older Sequel version or older PostgreSQL version
|
49
|
-
# CREATE TABLE "table" ("id" serial PRIMARY KEY)
|
50
|
-
|
51
|
-
Identity columns fix many issues that serial columns have, in
|
52
|
-
addition to being the SQL standard way to support auto incrementing
|
53
|
-
columns.
|
54
|
-
|
55
|
-
* PostgreSQL identity columns are now correctly recognized and the
|
56
|
-
:auto_increment schema entry is now populated for them.
|
57
|
-
|
58
|
-
* Dataset#with_sql_{all,each,first,single_value} now use a cached
|
59
|
-
dataset to avoid clobbering the current dataset's columns.
|
60
|
-
Previously, the clobbering of the current dataset's columns was
|
61
|
-
documented and the method warned against using SQL with
|
62
|
-
different columns. These methods are now safe to use in such
|
63
|
-
cases, but will not have the same performance advantages if the
|
64
|
-
current dataset is not cached.
|
65
|
-
|
66
|
-
* On ruby 2.1+, Sequel now uses Process::CLOCK_MONOTONIC when
|
67
|
-
performing elapsed time calculations so that it is not affected by
|
68
|
-
modifications to the system's time.
|
69
|
-
|
70
|
-
* In the postgres adapter, prepared statement errors related to
|
71
|
-
changing types are now treated as disconnect errors. While they
|
72
|
-
are not technically disconnect errors, treating them as such
|
73
|
-
will in general reduce the total number of exceptions generated
|
74
|
-
from 1 per affected statement per connection to 1 per
|
75
|
-
connection.
|
76
|
-
|
77
|
-
* In the pg_array_associations plugin, the array_type for
|
78
|
-
pg_array_to_many and many_to_pg_array association reflections is
|
79
|
-
now always the scalar type for the array (e.g. integer). Previously,
|
80
|
-
the array type (e.g. integer[]) was used in some cases. This didn't
|
81
|
-
previously result in issues as PostgreSQL considers integer[][] the
|
82
|
-
same type as integer[].
|
83
|
-
|
84
|
-
* In the pg_array_associations plugin, the many_to_pg_array
|
85
|
-
association remove_all_* method now uses the appropriate cast to
|
86
|
-
work for non-integer array types such as bigint[].
|
87
|
-
|
88
|
-
* Database#server_version on PostgreSQL 10.1+ now works correctly
|
89
|
-
when the connection does not support the server_version method.
|
90
|
-
Now the server_version_num database setting is always used to
|
91
|
-
ensure consistent behavior across adapters.
|
92
|
-
|
93
|
-
* In the jdbc/oracle adapter, temporary clobs are now manually
|
94
|
-
freed to prevent a memory leak, in line with the Oracle JDBC
|
95
|
-
driver recommendations.
|
96
|
-
|
97
|
-
* The Sequel <4 release notes and changelog are no longer shipped
|
98
|
-
with the gem, decreasing the size of the gem by 20%.
|
99
|
-
|
100
|
-
= Backwards Compatibility
|
101
|
-
|
102
|
-
* The switch to using identity columns instead of serial columns
|
103
|
-
by default on PostgreSQL 10.2+ may break backwards compatibilty
|
104
|
-
in some situations, such as code that relies on what are generally
|
105
|
-
considered bugs in serial columns, such as CREATE TABLE LIKE
|
106
|
-
using the same sequence for the column in both the existing table
|
107
|
-
and the new table, or that dropping the default value for the
|
108
|
-
column does not drop the related sequence.
|
@@ -1,35 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* A sharded_timed_queue connection pool has been added. This offers
|
4
|
-
most of the same features as the sharded_threaded connection pool,
|
5
|
-
but uses the new Queue#pop :timeout features added in Ruby 3.2 to
|
6
|
-
allow for a simpler and possibly faster and more robust
|
7
|
-
implementation.
|
8
|
-
|
9
|
-
* If a :pool_class option is not specified when creating a Database,
|
10
|
-
Sequel will now look at the SEQUEL_DEFAULT_CONNECTION_POOL
|
11
|
-
environment variable to determine the connection pool class to use.
|
12
|
-
This allows you to set SEQUEL_DEFAULT_CONNECTION_POOL=timed_queue
|
13
|
-
on Ruby 3.2 to test with the timed_queue connection pool without
|
14
|
-
making any code changes. If the :servers Database option is given,
|
15
|
-
Sequel will automatically use the sharded version of the connection
|
16
|
-
pool specified by SEQUEL_DEFAULT_CONNECTION_POOL.
|
17
|
-
|
18
|
-
= Other Improvements
|
19
|
-
|
20
|
-
* The connection_validator, connection_expiration, and
|
21
|
-
async_thread_pool extensions now work with the timed_queue and
|
22
|
-
sharded_timed_queue connection pools.
|
23
|
-
|
24
|
-
* The sharded_threaded connection pool now disconnects connections
|
25
|
-
for all specified servers instead of just the last specified server
|
26
|
-
when using remove_server.
|
27
|
-
|
28
|
-
* The static_cache plugin now recognizes when the forbid_lazy_load
|
29
|
-
plugin is already loaded, and does not return instances that
|
30
|
-
forbid lazy load for methods that return a single object, such as
|
31
|
-
Database.{[],cache_get_pk,first}.
|
32
|
-
|
33
|
-
* Sequel now displays an informative error message if attempting to
|
34
|
-
load the connection_validator or connection_expiration extensions
|
35
|
-
when using the single threaded connection pool.
|
@@ -1,21 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* A pg_xmin_optimistic_locking plugin has been added. This plugin
|
4
|
-
uses PostgreSQL's xmin system column to implement optimistic
|
5
|
-
locking. The xmin system column is automatically updated whenever
|
6
|
-
the database row is updated. You can load this plugin into a
|
7
|
-
base model and have all models that subclass from it use optimistic
|
8
|
-
locking, without needing any user-defined lock columns.
|
9
|
-
|
10
|
-
= Other Improvements
|
11
|
-
|
12
|
-
* set_column_allow_null is now a reversible migration method inside
|
13
|
-
alter_table blocks.
|
14
|
-
|
15
|
-
* The use of ILIKE no longer forces the ESCAPE clause on PostgreSQL,
|
16
|
-
which allows the use of ILIKE ANY and other constructions. There
|
17
|
-
is no need to use the ESCAPE clause with ILIKE, because the value
|
18
|
-
Sequel uses is PostgreSQL's default.
|
19
|
-
|
20
|
-
* The xid PostgreSQL type is now recognized as an integer type in the
|
21
|
-
jdbc/postgresql adapter.
|