Documentation for Sequel (v5.85.0)
+Documentation for Sequel (v5.86.0)
@@ -166,6 +166,8 @@
Release Notes
Sequel::Model Plugins for v5.85.0
+Sequel::Model Plugins for v5.86.0
Public Instance methods
database name (filename or ‘:memory:’ or file: URI)
open database in read-only mode; useful for reading static data that you do not want to modify
+disable double quoted strings in DDL and DML statements (requires SQLite
3.29.0+ and sqlite3 gem version 1.4.3+).
how long to wait for the database to be available if it is locked, given in milliseconds (default is 5000)
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -126 def connect(server) -127 opts = server_opts(server) -128 opts[:database] = ':memory:' if blank_object?(opts[:database]) -129 sqlite3_opts = {} -130 sqlite3_opts[:readonly] = typecast_value_boolean(opts[:readonly]) if opts.has_key?(:readonly) -131 db = ::SQLite3::Database.new(opts[:database].to_s, sqlite3_opts) -132 db.busy_timeout(typecast_value_integer(opts.fetch(:timeout, 5000))) -133 -134 if USE_EXTENDED_RESULT_CODES -135 db.extended_result_codes = true -136 end -137 -138 connection_pragmas.each{|s| log_connection_yield(s, db){db.execute_batch(s)}} -139 -140 if typecast_value_boolean(opts[:setup_regexp_function]) -141 setup_regexp_function(db, opts[:setup_regexp_function]) -142 end -143 -144 class << db -145 attr_reader :prepared_statements +128 def connect(server) +129 opts = server_opts(server) +130 opts[:database] = ':memory:' if blank_object?(opts[:database]) +131 sqlite3_opts = {} +132 sqlite3_opts[:readonly] = typecast_value_boolean(opts[:readonly]) if opts.has_key?(:readonly) +133 # SEQUEL6: Make strict: true the default behavior +134 sqlite3_opts[:strict] = typecast_value_boolean(opts[:disable_dqs]) if opts.has_key?(:disable_dqs) +135 db = ::SQLite3::Database.new(opts[:database].to_s, sqlite3_opts) +136 db.busy_timeout(typecast_value_integer(opts.fetch(:timeout, 5000))) +137 +138 if USE_EXTENDED_RESULT_CODES +139 db.extended_result_codes = true +140 end +141 +142 connection_pragmas.each{|s| log_connection_yield(s, db){db.execute_batch(s)}} +143 +144 if typecast_value_boolean(opts[:setup_regexp_function]) +145 setup_regexp_function(db, opts[:setup_regexp_function]) 146 end -147 db.instance_variable_set(:@prepared_statements, {}) -148 -149 db -150 end+147 +148 class << db +149 attr_reader :prepared_statements +150 end +151 db.instance_variable_set(:@prepared_statements, {}) +152 +153 db +154 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -159 def disconnect_connection(c) -160 c.prepared_statements.each_value{|v| v.first.close} -161 c.close -162 end+163 def disconnect_connection(c) +164 c.prepared_statements.each_value{|v| v.first.close} +165 c.close +166 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -165 def execute(sql, opts=OPTS, &block) -166 _execute(:select, sql, opts, &block) -167 end+169 def execute(sql, opts=OPTS, &block) +170 _execute(:select, sql, opts, &block) +171 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -177 def execute_ddl(sql, opts=OPTS) -178 synchronize(opts[:server]) do |conn| -179 conn.prepared_statements.values.each{|cps, s| cps.close} -180 conn.prepared_statements.clear -181 super -182 end -183 end+181 def execute_ddl(sql, opts=OPTS) +182 synchronize(opts[:server]) do |conn| +183 conn.prepared_statements.values.each{|cps, s| cps.close} +184 conn.prepared_statements.clear +185 super +186 end +187 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -170 def execute_dui(sql, opts=OPTS) -171 _execute(:update, sql, opts) -172 end+174 def execute_dui(sql, opts=OPTS) +175 _execute(:update, sql, opts) +176 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -185 def execute_insert(sql, opts=OPTS) -186 _execute(:insert, sql, opts) -187 end+189 def execute_insert(sql, opts=OPTS) +190 _execute(:insert, sql, opts) +191 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -189 def freeze -190 @conversion_procs.freeze -191 super -192 end+193 def freeze +194 @conversion_procs.freeze +195 super +196 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -195 def to_application_timestamp(s) -196 case s -197 when String -198 super -199 when Integer -200 super(Time.at(s).to_s) -201 when Float -202 super(DateTime.jd(s).to_s) -203 else -204 raise Sequel::Error, "unhandled type when converting to : #{s.inspect} (#{s.class.inspect})" -205 end -206 end+199 def to_application_timestamp(s) +200 case s +201 when String +202 super +203 when Integer +204 super(Time.at(s).to_s) +205 when Float +206 super(DateTime.jd(s).to_s) +207 else +208 raise Sequel::Error, "unhandled type when converting to : #{s.inspect} (#{s.class.inspect})" +209 end +210 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -381 def complex_expression_sql_append(sql, op, args) -382 case op -383 when :~, :'!~', :'~*', :'!~*' -384 return super unless supports_regexp? -385 -386 case_insensitive = [:'~*', :'!~*'].include?(op) -387 sql << 'NOT ' if [:'!~', :'!~*'].include?(op) -388 sql << '(' -389 sql << 'LOWER(' if case_insensitive -390 literal_append(sql, args[0]) -391 sql << ')' if case_insensitive -392 sql << ' REGEXP ' +385 def complex_expression_sql_append(sql, op, args) +386 case op +387 when :~, :'!~', :'~*', :'!~*' +388 return super unless supports_regexp? +389 +390 case_insensitive = [:'~*', :'!~*'].include?(op) +391 sql << 'NOT ' if [:'!~', :'!~*'].include?(op) +392 sql << '(' 393 sql << 'LOWER(' if case_insensitive -394 literal_append(sql, args[1]) +394 literal_append(sql, args[0]) 395 sql << ')' if case_insensitive -396 sql << ')' -397 else -398 super -399 end -400 end+396 sql << ' REGEXP ' +397 sql << 'LOWER(' if case_insensitive +398 literal_append(sql, args[1]) +399 sql << ')' if case_insensitive +400 sql << ')' +401 else +402 super +403 end +404 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -402 def fetch_rows(sql) -403 execute(sql) do |result| -404 cps = db.conversion_procs -405 type_procs = result.types.map{|t| cps[base_type_name(t)]} -406 j = -1 -407 cols = result.columns.map{|c| [output_identifier(c), type_procs[(j+=1)]]} -408 self.columns = cols.map(&:first) -409 max = cols.length -410 result.each do |values| -411 row = {} -412 i = -1 -413 while (i += 1) < max -414 name, type_proc = cols[i] -415 v = values[i] -416 if type_proc && v -417 v = type_proc.call(v) -418 end -419 row[name] = v -420 end -421 yield row -422 end -423 end -424 end+406 def fetch_rows(sql) +407 execute(sql) do |result| +408 cps = db.conversion_procs +409 type_procs = result.types.map{|t| cps[base_type_name(t)]} +410 j = -1 +411 cols = result.columns.map{|c| [output_identifier(c), type_procs[(j+=1)]]} +412 self.columns = cols.map(&:first) +413 max = cols.length +414 result.each do |values| +415 row = {} +416 i = -1 +417 while (i += 1) < max +418 name, type_proc = cols[i] +419 v = values[i] +420 if type_proc && v +421 v = type_proc.call(v) +422 end +423 row[name] = v +424 end +425 yield row +426 end +427 end +428 end
Public Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -427 def supports_regexp? -428 db.allow_regexp? -429 end+431 def supports_regexp? +432 db.allow_regexp? +433 end
Protected Instance methods
[show source]# File lib/sequel/adapters/sqlite.rb -362 def map_to_prepared_args(hash) -363 args = {} -364 hash.each{|k,v| args[k.to_s.gsub('.', '__')] = v} -365 args -366 end+366 def map_to_prepared_args(hash) +367 args = {} +368 hash.each{|k,v| args[k.to_s.gsub('.', '__')] = v} +369 args +370 end diff --git a/rdoc-adapters/created.rid b/rdoc-adapters/created.rid index 061f3b6fe..26a5fd827 100644 --- a/rdoc-adapters/created.rid +++ b/rdoc-adapters/created.rid @@ -1,22 +1,22 @@ -Tue, 01 Oct 2024 09:00:01 -0700 +Fri, 01 Nov 2024 09:23:32 -0700 lib/sequel/adapters/ado.rb Tue, 21 Sep 2021 14:24:30 -0700 lib/sequel/adapters/ado/access.rb Tue, 21 Sep 2021 14:24:30 -0700 lib/sequel/adapters/ado/mssql.rb Mon, 28 Jan 2019 08:29:19 -0800 lib/sequel/adapters/amalgalite.rb Fri, 17 Dec 2021 16:59:47 -0800 lib/sequel/adapters/ibmdb.rb Tue, 26 Sep 2023 09:59:16 -0700 -lib/sequel/adapters/jdbc.rb Fri, 06 Oct 2023 16:04:02 -0700 -lib/sequel/adapters/jdbc/db2.rb Fri, 06 Oct 2023 16:04:02 -0700 -lib/sequel/adapters/jdbc/derby.rb Thu, 11 Jul 2024 11:09:22 -0700 -lib/sequel/adapters/jdbc/h2.rb Wed, 06 Dec 2023 16:41:40 -0800 -lib/sequel/adapters/jdbc/hsqldb.rb Wed, 06 Dec 2023 16:41:40 -0800 -lib/sequel/adapters/jdbc/jtds.rb Tue, 01 Aug 2017 08:12:00 -0700 +lib/sequel/adapters/jdbc.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/db2.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/derby.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/h2.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/hsqldb.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/jtds.rb Sun, 27 Oct 2024 00:06:24 -0700 lib/sequel/adapters/jdbc/mssql.rb Tue, 01 Aug 2017 08:12:00 -0700 -lib/sequel/adapters/jdbc/mysql.rb Fri, 16 Oct 2020 09:55:57 -0700 -lib/sequel/adapters/jdbc/oracle.rb Mon, 25 Feb 2019 08:20:33 -0800 -lib/sequel/adapters/jdbc/postgresql.rb Mon, 24 Jul 2023 12:06:10 -0700 -lib/sequel/adapters/jdbc/sqlanywhere.rb Wed, 06 Dec 2023 16:41:40 -0800 -lib/sequel/adapters/jdbc/sqlite.rb Fri, 02 Sep 2022 09:11:30 -0700 -lib/sequel/adapters/jdbc/sqlserver.rb Tue, 31 Oct 2023 12:30:04 -0700 +lib/sequel/adapters/jdbc/mysql.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/oracle.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/postgresql.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/sqlanywhere.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/sqlite.rb Sun, 27 Oct 2024 00:06:24 -0700 +lib/sequel/adapters/jdbc/sqlserver.rb Sun, 27 Oct 2024 00:06:24 -0700 lib/sequel/adapters/jdbc/transactions.rb Fri, 07 Dec 2018 10:50:17 -0800 lib/sequel/adapters/mock.rb Fri, 02 Sep 2022 09:11:30 -0700 lib/sequel/adapters/mysql.rb Fri, 19 May 2023 09:45:26 -0700 @@ -26,18 +26,18 @@ lib/sequel/adapters/odbc/db2.rb Tue, 01 Aug 2017 08:12:00 -0700 lib/sequel/adapters/odbc/mssql.rb Wed, 06 Dec 2023 16:41:40 -0800 lib/sequel/adapters/odbc/oracle.rb Tue, 01 Aug 2017 08:12:00 -0700 lib/sequel/adapters/oracle.rb Wed, 21 Dec 2022 15:06:01 -0800 -lib/sequel/adapters/postgres.rb Wed, 06 Dec 2023 16:41:40 -0800 +lib/sequel/adapters/postgres.rb Fri, 04 Oct 2024 17:03:35 -0700 lib/sequel/adapters/postgresql.rb Tue, 01 Aug 2017 08:12:00 -0700 lib/sequel/adapters/shared/access.rb Wed, 21 Dec 2022 15:06:01 -0800 lib/sequel/adapters/shared/db2.rb Thu, 11 Jul 2024 11:09:22 -0700 lib/sequel/adapters/shared/mssql.rb Thu, 11 Jul 2024 11:09:22 -0700 lib/sequel/adapters/shared/mysql.rb Fri, 05 Apr 2024 07:51:26 -0700 lib/sequel/adapters/shared/oracle.rb Wed, 06 Dec 2023 16:41:40 -0800 -lib/sequel/adapters/shared/postgres.rb Thu, 11 Jul 2024 11:09:22 -0700 +lib/sequel/adapters/shared/postgres.rb Thu, 03 Oct 2024 14:10:05 -0700 lib/sequel/adapters/shared/sqlanywhere.rb Wed, 06 Dec 2023 16:41:40 -0800 lib/sequel/adapters/shared/sqlite.rb Thu, 22 Aug 2024 11:50:35 -0700 lib/sequel/adapters/sqlanywhere.rb Tue, 21 Sep 2021 14:24:30 -0700 -lib/sequel/adapters/sqlite.rb Fri, 05 Jan 2024 15:36:17 -0800 +lib/sequel/adapters/sqlite.rb Sun, 27 Oct 2024 20:47:17 -0700 lib/sequel/adapters/tinytds.rb Tue, 21 Sep 2021 14:24:30 -0700 lib/sequel/adapters/trilogy.rb Thu, 04 May 2023 13:25:27 -0700 lib/sequel/adapters/utils/columns_limit_1.rb Wed, 13 Oct 2021 12:18:25 -0700 diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/db2_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/db2_rb.html index 67aa3d60a..1ad1b99c9 100644 --- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/db2_rb.html +++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/db2_rb.html @@ -31,7 +31,7 @@
db2.rb
Last Update:
-2023-10-06 16:04:02 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/derby_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/derby_rb.html
index fa3114b36..c0546fa56 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/derby_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/derby_rb.html
@@ -31,7 +31,7 @@
Last Update:
-2024-07-11 11:09:22 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/h2_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/h2_rb.html
index 1800015e9..aec39c8bd 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/h2_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/h2_rb.html
@@ -31,7 +31,7 @@ h2.rb
Last Update:
-2023-12-06 16:41:40 -0800
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/hsqldb_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/hsqldb_rb.html
index cab1e74e5..c16152544 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/hsqldb_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/hsqldb_rb.html
@@ -31,7 +31,7 @@ hsqldb.rb
Last Update:
-2023-12-06 16:41:40 -0800
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/jtds_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/jtds_rb.html
index 65eeca758..c9c4f7682 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/jtds_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/jtds_rb.html
@@ -31,7 +31,7 @@ jtds.rb
Last Update:
-2017-08-01 08:12:00 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/mysql_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/mysql_rb.html
index 8ae9e6e5b..ed284d346 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/mysql_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/mysql_rb.html
@@ -31,7 +31,7 @@ mysql.rb
Last Update:
-2020-10-16 09:55:57 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/oracle_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/oracle_rb.html
index 0fc97b8e1..9c5c4eb85 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/oracle_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/oracle_rb.html
@@ -31,7 +31,7 @@ oracle.rb
Last Update:
-2019-02-25 08:20:33 -0800
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/postgresql_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/postgresql_rb.html
index 51b4dde3a..62cd9f61b 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/postgresql_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/postgresql_rb.html
@@ -31,7 +31,7 @@ postgresql.rb
Last Update:
-2023-07-24 12:06:10 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlanywhere_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlanywhere_rb.html
index adfdf7325..201b5e99c 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlanywhere_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlanywhere_rb.html
@@ -31,7 +31,7 @@ sqlanywhere.rb
Last Update:
-2023-12-06 16:41:40 -0800
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlite_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlite_rb.html
index 246a73894..e1ae9e662 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlite_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlite_rb.html
@@ -31,7 +31,7 @@ sqlite.rb
Last Update:
-2022-09-02 09:11:30 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlserver_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlserver_rb.html
index 2ac9647d9..ce9e5d3cd 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlserver_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc/sqlserver_rb.html
@@ -31,7 +31,7 @@ sqlserver.rb
Last Update:
-2023-10-31 12:30:04 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/jdbc_rb.html b/rdoc-adapters/files/lib/sequel/adapters/jdbc_rb.html
index 0b64480d1..9f1438232 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/jdbc_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/jdbc_rb.html
@@ -31,7 +31,7 @@ jdbc.rb
Last Update:
-2023-10-06 16:04:02 -0700
+2024-10-27 00:06:24 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/postgres_rb.html b/rdoc-adapters/files/lib/sequel/adapters/postgres_rb.html
index e8e28505f..64d47668c 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/postgres_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/postgres_rb.html
@@ -31,7 +31,7 @@ postgres.rb
Last Update:
-2023-12-06 16:41:40 -0800
+2024-10-04 17:03:35 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/shared/postgres_rb.html b/rdoc-adapters/files/lib/sequel/adapters/shared/postgres_rb.html
index 3dd22aa14..9e5bc5d7d 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/shared/postgres_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/shared/postgres_rb.html
@@ -31,7 +31,7 @@ postgres.rb
Last Update:
-2024-07-11 11:09:22 -0700
+2024-10-03 14:10:05 -0700
diff --git a/rdoc-adapters/files/lib/sequel/adapters/sqlite_rb.html b/rdoc-adapters/files/lib/sequel/adapters/sqlite_rb.html
index 95f58035b..067f3f7ca 100644
--- a/rdoc-adapters/files/lib/sequel/adapters/sqlite_rb.html
+++ b/rdoc-adapters/files/lib/sequel/adapters/sqlite_rb.html
@@ -31,7 +31,7 @@ sqlite.rb
Last Update:
-2024-01-05 15:36:17 -0800
+2024-10-27 20:47:17 -0700
diff --git a/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions.html b/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions.html
index afa029c22..179afb300 100644
--- a/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions.html
+++ b/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions.html
@@ -36,27 +36,43 @@ module
-The subset_conditions plugin creates an additional *_conditions method for every subset created, which returns the filter conditions the subset uses. This can be useful if you want to use the conditions for a separate filter or combine them with OR.
+The subset_conditions plugin creates an additional *_conditions method for every ‘subset`, `where`, and `exclude` method call in a dataset_module block. This method returns the filter conditions, which can be useful if you want to use the conditions for a separate filter or combine them with OR. It also supports where_all and where_any dataset_module methods for combining multiple dataset method filters with AND or OR.
Usage:
-# Add subset_conditions in the Album class
-Album.plugin :subset_conditions
+# Add subset_conditions in the Album class
+Album.plugin :subset_conditions
-# This will now create a published_conditions method
-Album.dataset_module do
- subset :published, published: true
-end
+Album.dataset_module do
+ # This will now create a published_conditions method
+ where :published, published: true
-Album.where(Album.published_conditions).sql
-# SELECT * FROM albums WHERE (published IS TRUE)
+ # This will now create a not_bad_conditions method
+ exclude :not_bad, :bad
-Album.exclude(Album.published_conditions).sql
-# SELECT * FROM albums WHERE (published IS NOT TRUE)
+ # This will create good_and_available and
+ # good_and_available_conditions methods
+ where_all :good_and_available, :published, :not_bad
-Album.where(Album.published_conditions | {ready: true}).sql
-# SELECT * FROM albums WHERE ((published IS TRUE) OR (ready IS TRUE))
-
+ # This will create good_or_available and
+ # good_or_available_conditions methods
+ where_any :good_or_available, :published, :not_bad
+end
+
+Album.where(Album.published_conditions).sql
+# SELECT * FROM albums WHERE (published IS TRUE)
+
+Album.exclude(Album.published_conditions).sql
+# SELECT * FROM albums WHERE (published IS NOT TRUE)
+
+Album.where(Album.published_conditions | {ready: true}).sql
+# SELECT * FROM albums WHERE ((published IS TRUE) OR (ready IS TRUE))
+
+Album.good_and_available.sql
+SELECT * FROM albums WHERE ((published IS TRUE) AND NOT bad)
+
+Album.good_or_available.sql
+SELECT * FROM albums WHERE ((published IS TRUE) OR NOT bad)
Methods
@@ -96,13 +112,13 @@ Public Class methods
[show source]
# File lib/sequel/plugins/subset_conditions.rb
-29 def self.apply(model, &block)
-30 model.instance_exec do
-31 @dataset_module_class = Class.new(@dataset_module_class) do
-32 include DatasetModuleMethods
-33 end
-34 end
-35 end
+48 def self.apply(model, &block)
+49 model.instance_exec do
+50 @dataset_module_class = Class.new(@dataset_module_class) do
+51 include DatasetModuleMethods
+52 end
+53 end
+54 end
diff --git a/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html b/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html
index e58d7f52d..93bc8f8d1 100644
--- a/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html
+++ b/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html
@@ -40,7 +40,10 @@ module
Methods
Public Instance
@@ -48,6 +51,30 @@ Public Instance
Public Instance methods
+
+
+
+exclude(name, *args, &block)
+
+
+
+
+Also create a method that returns the conditions the filter uses.
+
+
+
+
+[show source]
+
+ # File lib/sequel/plugins/subset_conditions.rb
+66 def exclude(name, *args, &block)
+67 super
+68 cond = args
+69 cond = cond.first if cond.size == 1
+70 define_method(:"#{name}_conditions"){Sequel.~(filter_expr(cond, &block))}
+71 end
+
+
@@ -64,12 +91,74 @@ Public Instance methods
[show source]
# File lib/sequel/plugins/subset_conditions.rb
-39 def where(name, *args, &block)
-40 super
-41 cond = args
-42 cond = cond.first if cond.size == 1
-43 define_method(:"#{name}_conditions"){filter_expr(cond, &block)}
-44 end
+58 def where(name, *args, &block)
+59 super
+60 cond = args
+61 cond = cond.first if cond.size == 1
+62 define_method(:"#{name}_conditions"){filter_expr(cond, &block)}
+63 end
+
+
+
+
+
+where_all(name, *args)
+
+
+
+
+Create a method that combines filters from already registered dataset methods, and filters for rows where all of the conditions are satisfied.
+
+Employee.dataset_module do
+ where :active, active: true
+ where :started, Sequel::CURRENT_DATE <= :start_date
+ where_all(:active_and_started, :active, :started)
+end
+
+Employee.active_and_started.sql
+# SELECT * FROM employees WHERE ((active IS TRUE) AND (CURRENT_DATE <= start_date))
+
+
+
+
+
+[show source]
+
+ # File lib/sequel/plugins/subset_conditions.rb
+85 def where_all(name, *args)
+86 _where_any_all(:&, name, args)
+87 end
+
+
+
+
+
+where_any(name, *args)
+
+
+
+
+Create a method that combines filters from already registered dataset methods, and filters for rows where any of the conditions are satisfied.
+
+Employee.dataset_module do
+ where :active, active: true
+ where :started, Sequel::CURRENT_DATE <= :start_date
+ where_any(:active_or_started, :active, :started)
+end
+
+Employee.active_or_started.sql
+# SELECT * FROM employees WHERE ((active IS TRUE) OR (CURRENT_DATE <= start_date))
+
+
+
+
+
+[show source]
+
+ # File lib/sequel/plugins/subset_conditions.rb
+101 def where_any(name, *args)
+102 _where_any_all(:|, name, args)
+103 end
diff --git a/rdoc-plugins/classes/Sequel/Schema/CreateTableGenerator.html b/rdoc-plugins/classes/Sequel/Schema/CreateTableGenerator.html
index 47103a163..f789046f4 100644
--- a/rdoc-plugins/classes/Sequel/Schema/CreateTableGenerator.html
+++ b/rdoc-plugins/classes/Sequel/Schema/CreateTableGenerator.html
@@ -70,44 +70,44 @@ Public Instance methods
[show source]
# File lib/sequel/extensions/schema_dumper.rb
-430 def dump_columns
-431 strings = []
-432 cols = columns.dup
-433 cols.each do |x|
-434 x.delete(:on_delete) if x[:on_delete] == :no_action
-435 x.delete(:on_update) if x[:on_update] == :no_action
-436 end
-437 if (pkn = primary_key_name) && !@primary_key[:keep_order]
-438 cols.delete_if{|x| x[:name] == pkn}
-439 pk = @primary_key.dup
-440 pkname = pk.delete(:name)
-441 @db.serial_primary_key_options.each{|k,v| pk.delete(k) if v == pk[k]}
-442 strings << "primary_key #{pkname.inspect}#{opts_inspect(pk)}"
-443 end
-444 cols.each do |c|
-445 c = c.dup
-446 name = c.delete(:name)
-447 strings << if table = c.delete(:table)
-448 c.delete(:type) if c[:type] == Integer || c[:type] == 'integer'
-449 "foreign_key #{name.inspect}, #{table.inspect}#{opts_inspect(c)}"
-450 elsif pkn == name
-451 @db.serial_primary_key_options.each{|k,v| c.delete(k) if v == c[k]}
-452 "primary_key #{name.inspect}#{opts_inspect(c)}"
-453 else
-454 type = c.delete(:type)
-455 opts = opts_inspect(c)
-456 case type
-457 when Class
-458 "#{type.name} #{name.inspect}#{opts}"
-459 when :Bignum
-460 "Bignum #{name.inspect}#{opts}"
-461 else
-462 "column #{name.inspect}, #{type.inspect}#{opts}"
-463 end
-464 end
-465 end
-466 strings.join("\n")
-467 end
+442 def dump_columns
+443 strings = []
+444 cols = columns.dup
+445 cols.each do |x|
+446 x.delete(:on_delete) if x[:on_delete] == :no_action
+447 x.delete(:on_update) if x[:on_update] == :no_action
+448 end
+449 if (pkn = primary_key_name) && !@primary_key[:keep_order]
+450 cols.delete_if{|x| x[:name] == pkn}
+451 pk = @primary_key.dup
+452 pkname = pk.delete(:name)
+453 @db.serial_primary_key_options.each{|k,v| pk.delete(k) if v == pk[k]}
+454 strings << "primary_key #{pkname.inspect}#{opts_inspect(pk)}"
+455 end
+456 cols.each do |c|
+457 c = c.dup
+458 name = c.delete(:name)
+459 strings << if table = c.delete(:table)
+460 c.delete(:type) if c[:type] == Integer || c[:type] == 'integer'
+461 "foreign_key #{name.inspect}, #{table.inspect}#{opts_inspect(c)}"
+462 elsif pkn == name
+463 @db.serial_primary_key_options.each{|k,v| c.delete(k) if v == c[k]}
+464 "primary_key #{name.inspect}#{opts_inspect(c)}"
+465 else
+466 type = c.delete(:type)
+467 opts = opts_inspect(c)
+468 case type
+469 when Class
+470 "#{type.name} #{name.inspect}#{opts}"
+471 when :Bignum
+472 "Bignum #{name.inspect}#{opts}"
+473 else
+474 "column #{name.inspect}, #{type.inspect}#{opts}"
+475 end
+476 end
+477 end
+478 strings.join("\n")
+479 end
@@ -126,33 +126,33 @@ Public Instance methods
[show source]
# File lib/sequel/extensions/schema_dumper.rb
-471 def dump_constraints
-472 cs = constraints.map do |c|
-473 c = c.dup
-474 type = c.delete(:type)
-475 case type
-476 when :check
-477 raise(Error, "can't dump check/constraint specified with Proc") if c[:check].is_a?(Proc)
-478 name = c.delete(:name)
-479 if !name and c[:check].length == 1 and c[:check].first.is_a?(Hash)
-480 "check #{c[:check].first.inspect[1...-1]}"
-481 else
-482 "#{name ? "constraint #{name.inspect}," : 'check'} #{c[:check].map(&:inspect).join(', ')}"
-483 end
-484 when :foreign_key
-485 c.delete(:on_delete) if c[:on_delete] == :no_action
-486 c.delete(:on_update) if c[:on_update] == :no_action
-487 c.delete(:deferrable) unless c[:deferrable]
-488 cols = c.delete(:columns)
-489 table = c.delete(:table)
-490 "#{type} #{cols.inspect}, #{table.inspect}#{opts_inspect(c)}"
-491 else
-492 cols = c.delete(:columns)
-493 "#{type} #{cols.inspect}#{opts_inspect(c)}"
-494 end
-495 end
-496 cs.join("\n")
-497 end
+483 def dump_constraints
+484 cs = constraints.map do |c|
+485 c = c.dup
+486 type = c.delete(:type)
+487 case type
+488 when :check
+489 raise(Error, "can't dump check/constraint specified with Proc") if c[:check].is_a?(Proc)
+490 name = c.delete(:name)
+491 if !name and c[:check].length == 1 and c[:check].first.is_a?(Hash)
+492 "check #{c[:check].first.inspect[1...-1]}"
+493 else
+494 "#{name ? "constraint #{name.inspect}," : 'check'} #{c[:check].map(&:inspect).join(', ')}"
+495 end
+496 when :foreign_key
+497 c.delete(:on_delete) if c[:on_delete] == :no_action
+498 c.delete(:on_update) if c[:on_update] == :no_action
+499 c.delete(:deferrable) unless c[:deferrable]
+500 cols = c.delete(:columns)
+501 table = c.delete(:table)
+502 "#{type} #{cols.inspect}, #{table.inspect}#{opts_inspect(c)}"
+503 else
+504 cols = c.delete(:columns)
+505 "#{type} #{cols.inspect}#{opts_inspect(c)}"
+506 end
+507 end
+508 cs.join("\n")
+509 end
@@ -178,19 +178,19 @@ Public Instance methods
[show source]
# File lib/sequel/extensions/schema_dumper.rb
-506 def dump_indexes(options=OPTS)
-507 is = indexes.map do |c|
-508 c = c.dup
-509 cols = c.delete(:columns)
-510 if table = options[:add_index] || options[:drop_index]
-511 "#{options[:drop_index] ? 'drop' : 'add'}_index #{table.inspect}, #{cols.inspect}#{', :ignore_errors=>true' if options[:ignore_errors]}#{opts_inspect(c)}"
-512 else
-513 "index #{cols.inspect}#{opts_inspect(c)}"
-514 end
-515 end
-516 is = is.reverse if options[:drop_index]
-517 is.join("\n")
-518 end
+518 def dump_indexes(options=OPTS)
+519 is = indexes.map do |c|
+520 c = c.dup
+521 cols = c.delete(:columns)
+522 if table = options[:add_index] || options[:drop_index]
+523 "#{options[:drop_index] ? 'drop' : 'add'}_index #{table.inspect}, #{cols.inspect}#{", #{IGNORE_ERRORS_KEY}true" if options[:ignore_errors]}#{opts_inspect(c)}"
+524 else
+525 "index #{cols.inspect}#{opts_inspect(c)}"
+526 end
+527 end
+528 is = is.reverse if options[:drop_index]
+529 is.join("\n")
+530 end
diff --git a/rdoc-plugins/classes/Sequel/SchemaDumper.html b/rdoc-plugins/classes/Sequel/SchemaDumper.html
index 4ac8656f1..c1133928a 100644
--- a/rdoc-plugins/classes/Sequel/SchemaDumper.html
+++ b/rdoc-plugins/classes/Sequel/SchemaDumper.html
@@ -68,55 +68,55 @@ Public Instance methods
[show source]
# File lib/sequel/extensions/schema_dumper.rb
-33 def column_schema_to_ruby_type(schema)
-34 type = schema[:db_type].downcase
-35 if database_type == :oracle
-36 type = type.sub(/ not null\z/, '')
-37 end
-38 case type
-39 when /\A(medium|small)?int(?:eger)?(?:\((\d+)\))?( unsigned)?\z/
-40 if !$1 && $2 && $2.to_i >= 10 && $3
-41 # Unsigned integer type with 10 digits can potentially contain values which
-42 # don't fit signed integer type, so use bigint type in target database.
-43 {:type=>:Bignum}
-44 else
-45 {:type=>Integer}
-46 end
-47 when /\Atinyint(?:\((\d+)\))?(?: unsigned)?\z/
-48 {:type =>schema[:type] == :boolean ? TrueClass : Integer}
-49 when /\Abigint(?:\((?:\d+)\))?(?: unsigned)?\z/
-50 {:type=>:Bignum}
-51 when /\A(?:real|float|double(?: precision)?|double\(\d+,\d+\))(?: unsigned)?\z/
-52 {:type=>Float}
-53 when 'boolean', 'bit', 'bool'
-54 {:type=>TrueClass}
-55 when /\A(?:(?:tiny|medium|long|n)?text|clob)\z/
-56 {:type=>String, :text=>true}
-57 when 'date'
-58 {:type=>Date}
-59 when /\A(?:small)?datetime\z/
-60 {:type=>DateTime}
-61 when /\Atimestamp(?:\((\d+)\))?(?: with(?:out)? time zone)?\z/
-62 {:type=>DateTime, :size=>($1.to_i if $1)}
-63 when /\Atime(?: with(?:out)? time zone)?\z/
-64 {:type=>Time, :only_time=>true}
-65 when /\An?char(?:acter)?(?:\((\d+)\))?\z/
-66 {:type=>String, :size=>($1.to_i if $1), :fixed=>true}
-67 when /\A(?:n?varchar2?|character varying|bpchar|string)(?:\((\d+)\))?\z/
-68 {:type=>String, :size=>($1.to_i if $1)}
-69 when /\A(?:small)?money\z/
-70 {:type=>BigDecimal, :size=>[19,2]}
-71 when /\A(?:decimal|numeric|number)(?:\((\d+)(?:,\s*(\d+))?\))?(?: unsigned)?\z/
-72 s = [($1.to_i if $1), ($2.to_i if $2)].compact
-73 {:type=>BigDecimal, :size=>(s.empty? ? nil : s)}
-74 when /\A(?:bytea|(?:tiny|medium|long)?blob|(?:var)?binary)(?:\((\d+)\))?\z/
-75 {:type=>File, :size=>($1.to_i if $1)}
-76 when /\A(?:year|(?:int )?identity)\z/
-77 {:type=>Integer}
-78 else
-79 {:type=>String}
-80 end
-81 end
+38 def column_schema_to_ruby_type(schema)
+39 type = schema[:db_type].downcase
+40 if database_type == :oracle
+41 type = type.sub(/ not null\z/, '')
+42 end
+43 case type
+44 when /\A(medium|small)?int(?:eger)?(?:\((\d+)\))?( unsigned)?\z/
+45 if !$1 && $2 && $2.to_i >= 10 && $3
+46 # Unsigned integer type with 10 digits can potentially contain values which
+47 # don't fit signed integer type, so use bigint type in target database.
+48 {:type=>:Bignum}
+49 else
+50 {:type=>Integer}
+51 end
+52 when /\Atinyint(?:\((\d+)\))?(?: unsigned)?\z/
+53 {:type =>schema[:type] == :boolean ? TrueClass : Integer}
+54 when /\Abigint(?:\((?:\d+)\))?(?: unsigned)?\z/
+55 {:type=>:Bignum}
+56 when /\A(?:real|float|double(?: precision)?|double\(\d+,\d+\))(?: unsigned)?\z/
+57 {:type=>Float}
+58 when 'boolean', 'bit', 'bool'
+59 {:type=>TrueClass}
+60 when /\A(?:(?:tiny|medium|long|n)?text|clob)\z/
+61 {:type=>String, :text=>true}
+62 when 'date'
+63 {:type=>Date}
+64 when /\A(?:small)?datetime\z/
+65 {:type=>DateTime}
+66 when /\Atimestamp(?:\((\d+)\))?(?: with(?:out)? time zone)?\z/
+67 {:type=>DateTime, :size=>($1.to_i if $1)}
+68 when /\Atime(?: with(?:out)? time zone)?\z/
+69 {:type=>Time, :only_time=>true}
+70 when /\An?char(?:acter)?(?:\((\d+)\))?\z/
+71 {:type=>String, :size=>($1.to_i if $1), :fixed=>true}
+72 when /\A(?:n?varchar2?|character varying|bpchar|string)(?:\((\d+)\))?\z/
+73 {:type=>String, :size=>($1.to_i if $1)}
+74 when /\A(?:small)?money\z/
+75 {:type=>BigDecimal, :size=>[19,2]}
+76 when /\A(?:decimal|numeric|number)(?:\((\d+)(?:,\s*(\d+))?\))?(?: unsigned)?\z/
+77 s = [($1.to_i if $1), ($2.to_i if $2)].compact
+78 {:type=>BigDecimal, :size=>(s.empty? ? nil : s)}
+79 when /\A(?:bytea|(?:tiny|medium|long)?blob|(?:var)?binary)(?:\((\d+)\))?\z/
+80 {:type=>File, :size=>($1.to_i if $1)}
+81 when /\A(?:year|(?:int )?identity)\z/
+82 {:type=>Integer}
+83 else
+84 {:type=>String}
+85 end
+86 end
@@ -136,17 +136,17 @@ Public Instance methods
[show source]
- # File lib/sequel/extensions/schema_dumper.rb
-90 def dump_foreign_key_migration(options=OPTS)
-91 ts = _dump_tables(options)
-92 <<END_MIG
-93 Sequel.migration do
-94 change do
-95 #{ts.map{|t| dump_table_foreign_keys(t)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
-96 end
-97 end
-98 END_MIG
-99 end
+ # File lib/sequel/extensions/schema_dumper.rb
+ 95 def dump_foreign_key_migration(options=OPTS)
+ 96 ts = _dump_tables(options)
+ 97 <<END_MIG
+ 98 Sequel.migration do
+ 99 change do
+100 #{ts.map{|t| dump_table_foreign_keys(t)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
+101 end
+102 end
+103 END_MIG
+104 end
@@ -170,16 +170,16 @@ Public Instance methods
[show source]
# File lib/sequel/extensions/schema_dumper.rb
-108 def dump_indexes_migration(options=OPTS)
-109 ts = _dump_tables(options)
-110 <<END_MIG
-111 Sequel.migration do
-112 change do
-113 #{ts.map{|t| dump_table_indexes(t, :add_index, options)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
-114 end
-115 end
-116 END_MIG
-117 end
+113 def dump_indexes_migration(options=OPTS)
+114 ts = _dump_tables(options)
+115 <<END_MIG
+116 Sequel.migration do
+117 change do
+118 #{ts.map{|t| dump_table_indexes(t, :add_index, options)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
+119 end
+120 end
+121 END_MIG
+122 end
@@ -207,32 +207,32 @@ Public Instance methods
[show source]
# File lib/sequel/extensions/schema_dumper.rb
-132 def dump_schema_migration(options=OPTS)
-133 options = options.dup
-134 if options[:indexes] == false && !options.has_key?(:foreign_keys)
-135 # Unless foreign_keys option is specifically set, disable if indexes
-136 # are disabled, as foreign keys that point to non-primary keys rely
-137 # on unique indexes being created first
-138 options[:foreign_keys] = false
-139 end
-140
-141 ts = sort_dumped_tables(_dump_tables(options), options)
-142 skipped_fks = if sfk = options[:skipped_foreign_keys]
-143 # Handle skipped foreign keys by adding them at the end via
-144 # alter_table/add_foreign_key. Note that skipped foreign keys
-145 # probably result in a broken down migration.
-146 sfka = sfk.sort.map{|table, fks| dump_add_fk_constraints(table, fks.values)}
-147 sfka.join("\n\n").gsub(/^/, ' ') unless sfka.empty?
-148 end
-149
-150 <<END_MIG
-151 Sequel.migration do
-152 change do
-153 #{ts.map{|t| dump_table_schema(t, options)}.join("\n\n").gsub(/^/, ' ')}#{"\n \n" if skipped_fks}#{skipped_fks}
-154 end
-155 end
-156 END_MIG
-157 end
+137 def dump_schema_migration(options=OPTS)
+138 options = options.dup
+139 if options[:indexes] == false && !options.has_key?(:foreign_keys)
+140 # Unless foreign_keys option is specifically set, disable if indexes
+141 # are disabled, as foreign keys that point to non-primary keys rely
+142 # on unique indexes being created first
+143 options[:foreign_keys] = false
+144 end
+145
+146 ts = sort_dumped_tables(_dump_tables(options), options)
+147 skipped_fks = if sfk = options[:skipped_foreign_keys]
+148 # Handle skipped foreign keys by adding them at the end via
+149 # alter_table/add_foreign_key. Note that skipped foreign keys
+150 # probably result in a broken down migration.
+151 sfka = sfk.sort.map{|table, fks| dump_add_fk_constraints(table, fks.values)}
+152 sfka.join("\n\n").gsub(/^/, ' ') unless sfka.empty?
+153 end
+154
+155 <<END_MIG
+156 Sequel.migration do
+157 change do
+158 #{ts.map{|t| dump_table_schema(t, options)}.join("\n\n").gsub(/^/, ' ')}#{"\n \n" if skipped_fks}#{skipped_fks}
+159 end
+160 end
+161 END_MIG
+162 end
@@ -251,11 +251,11 @@ Public Instance methods
[show source]
# File lib/sequel/extensions/schema_dumper.rb
-161 def dump_table_schema(table, options=OPTS)
-162 gen = dump_table_generator(table, options)
-163 commands = [gen.dump_columns, gen.dump_constraints, gen.dump_indexes].reject{|x| x == ''}.join("\n\n")
-164 "create_table(#{table.inspect}#{', :ignore_index_errors=>true' if !options[:same_db] && options[:indexes] != false && !gen.indexes.empty?}) do\n#{commands.gsub(/^/, ' ')}\nend"
-165 end
+166 def dump_table_schema(table, options=OPTS)
+167 gen = dump_table_generator(table, options)
+168 commands = [gen.dump_columns, gen.dump_constraints, gen.dump_indexes].reject{|x| x == ''}.join("\n\n")
+169 "create_table(#{table.inspect}#{", #{IGNORE_INDEX_ERRORS_KEY}true" if !options[:same_db] && options[:indexes] != false && !gen.indexes.empty?}) do\n#{commands.gsub(/^/, ' ')}\nend"
+170 end
diff --git a/rdoc-plugins/created.rid b/rdoc-plugins/created.rid
index 16128deb6..2ac5a8e13 100644
--- a/rdoc-plugins/created.rid
+++ b/rdoc-plugins/created.rid
@@ -1,4 +1,4 @@
-Tue, 01 Oct 2024 09:00:04 -0700
+Fri, 01 Nov 2024 09:23:36 -0700
lib/sequel/extensions/_model_constraint_validations.rb Tue, 24 Jan 2017 12:27:29 -0800
lib/sequel/extensions/_model_pg_row.rb Tue, 11 Oct 2022 13:37:12 -0700
lib/sequel/extensions/_pretty_table.rb Mon, 17 Oct 2022 09:39:14 -0700
@@ -74,7 +74,7 @@ lib/sequel/extensions/round_timestamps.rb Wed, 06 Dec 2023 16:41:40 -0800
lib/sequel/extensions/run_transaction_hooks.rb Wed, 01 Jul 2020 11:28:34 -0700
lib/sequel/extensions/s.rb Sat, 18 Dec 2021 12:49:34 -0800
lib/sequel/extensions/schema_caching.rb Thu, 17 Aug 2023 13:01:31 -0700
-lib/sequel/extensions/schema_dumper.rb Wed, 29 Mar 2023 08:54:35 -0700
+lib/sequel/extensions/schema_dumper.rb Tue, 08 Oct 2024 15:47:24 -0700
lib/sequel/extensions/select_remove.rb Tue, 01 Aug 2017 08:12:01 -0700
lib/sequel/extensions/sequel_4_dataset_methods.rb Thu, 10 Jan 2019 07:53:39 -0800
lib/sequel/extensions/server_block.rb Mon, 12 Jun 2023 13:05:49 -0700
@@ -177,7 +177,7 @@ lib/sequel/plugins/static_cache.rb Fri, 30 Jun 2023 11:20:51 -0700
lib/sequel/plugins/static_cache_cache.rb Thu, 17 Aug 2023 13:01:31 -0700
lib/sequel/plugins/string_stripper.rb Thu, 09 Jul 2020 12:21:33 -0700
lib/sequel/plugins/subclasses.rb Fri, 02 Sep 2022 09:11:30 -0700
-lib/sequel/plugins/subset_conditions.rb Sun, 14 Apr 2019 11:06:43 -0700
+lib/sequel/plugins/subset_conditions.rb Sun, 27 Oct 2024 18:36:37 -0700
lib/sequel/plugins/table_select.rb Tue, 01 Aug 2017 08:12:01 -0700
lib/sequel/plugins/tactical_eager_loading.rb Fri, 21 Jun 2024 12:48:20 -0700
lib/sequel/plugins/throw_failures.rb Tue, 21 Jan 2020 16:47:15 -0800
diff --git a/rdoc-plugins/files/lib/sequel/extensions/schema_dumper_rb.html b/rdoc-plugins/files/lib/sequel/extensions/schema_dumper_rb.html
index 3f713e45c..8c84a9ffc 100644
--- a/rdoc-plugins/files/lib/sequel/extensions/schema_dumper_rb.html
+++ b/rdoc-plugins/files/lib/sequel/extensions/schema_dumper_rb.html
@@ -31,7 +31,7 @@ schema_dumper.rb
Last Update:
-2023-03-29 08:54:35 -0700
+2024-10-08 15:47:24 -0700
diff --git a/rdoc-plugins/files/lib/sequel/plugins/subset_conditions_rb.html b/rdoc-plugins/files/lib/sequel/plugins/subset_conditions_rb.html
index 7c9406afa..9c79d65d4 100644
--- a/rdoc-plugins/files/lib/sequel/plugins/subset_conditions_rb.html
+++ b/rdoc-plugins/files/lib/sequel/plugins/subset_conditions_rb.html
@@ -31,7 +31,7 @@ subset_conditions.rb
Last Update:
-2019-04-14 11:06:43 -0700
+2024-10-27 18:36:37 -0700
diff --git a/rdoc-plugins/fr_method_index.html b/rdoc-plugins/fr_method_index.html
index 7fd8746fb..d8a6b8a55 100644
--- a/rdoc-plugins/fr_method_index.html
+++ b/rdoc-plugins/fr_method_index.html
@@ -168,91 +168,91 @@
#wrap_json_primitives (Sequel::Postgres::JSONDatabaseMethods)
#wrapper (Sequel::Postgres::JSONQueryOp)
::_load (Sequel::Postgres::HStore)
-::apply (Sequel::Plugins::ColumnEncryption)
-::apply (Sequel::Plugins::StringStripper)
-::apply (Sequel::Plugins::AutoValidationsConstraintValidationsPresenceMessage)
-::apply (Sequel::Plugins::Subclasses)
-::apply (Sequel::Plugins::SubsetConditions)
-::apply (Sequel::Plugins::PgXminOptimisticLocking)
-::apply (Sequel::Plugins::PreparedStatements)
-::apply (Sequel::Plugins::InvertedSubsets)
-::apply (Sequel::Plugins::ClassTableInheritance)
-::apply (Sequel::Plugins::HookClassMethods)
-::apply (Sequel::Plugins::AssociationDependencies)
-::apply (Sequel::Plugins::Touch)
-::apply (Sequel::Plugins::ColumnConflicts)
-::apply (Sequel::Migration)
-::apply (Sequel::Plugins::InputTransformer)
-::apply (Sequel::Plugins::LazyAttributes)
-::apply (Sequel::Plugins::SerializationModificationDetection)
-::apply (Sequel::Plugins::AutoValidations)
-::apply (Sequel::Plugins::Finder)
-::apply (Sequel::Plugins::ConstraintValidations)
::apply (Sequel::Plugins::MssqlOptimisticLocking)
-::apply (Sequel::Plugins::Composition)
::apply (Sequel::Plugins::UnusedAssociations)
-::apply (Sequel::Plugins::NestedAttributes)
-::apply (Sequel::Plugins::ValidateAssociated)
-::apply (Sequel::Plugins::OptimisticLocking)
-::apply (Sequel::Plugins::Serialization)
+::apply (Sequel::Plugins::AutoValidations)
::apply (Sequel::Plugins::OptimisticLockingBase)
::apply (Sequel::Migrator)
+::apply (Sequel::Plugins::SerializationModificationDetection)
+::apply (Sequel::Plugins::AutoValidationsConstraintValidationsPresenceMessage)
+::apply (Sequel::Plugins::Finder)
+::apply (Sequel::Plugins::ValidateAssociated)
::apply (Sequel::Plugins::RcteTree)
-::apply (Sequel::Plugins::PreparedStatementsSafe)
::apply (Sequel::Plugins::ValidationClassMethods)
-::apply (Sequel::Plugins::PgArrayAssociations)
-::apply (Sequel::Plugins::DelayAddAssociation)
+::apply (Sequel::Plugins::OptimisticLocking)
+::apply (Sequel::Plugins::NestedAttributes)
::apply (Sequel::Plugins::Tree)
::apply (Sequel::Plugins::ValidationHelpersGenericTypeMessages)
+::apply (Sequel::Plugins::HookClassMethods)
+::apply (Sequel::Plugins::AssociationDependencies)
+::apply (Sequel::Plugins::DelayAddAssociation)
+::apply (Sequel::Plugins::Serialization)
+::apply (Sequel::Migration)
+::apply (Sequel::Plugins::ClassTableInheritance)
+::apply (Sequel::Plugins::PgArrayAssociations)
+::apply (Sequel::Plugins::Touch)
+::apply (Sequel::Plugins::LazyAttributes)
+::apply (Sequel::Plugins::SubsetConditions)
+::apply (Sequel::Plugins::ColumnConflicts)
+::apply (Sequel::Plugins::ConstraintValidations)
+::apply (Sequel::Plugins::Subclasses)
+::apply (Sequel::Plugins::StringStripper)
+::apply (Sequel::Plugins::InvertedSubsets)
+::apply (Sequel::Plugins::PgXminOptimisticLocking)
+::apply (Sequel::Plugins::PreparedStatementsSafe)
+::apply (Sequel::Plugins::ColumnEncryption)
+::apply (Sequel::Plugins::Composition)
+::apply (Sequel::Plugins::PreparedStatements)
+::apply (Sequel::Plugins::InputTransformer)
::check_current (Sequel::Migrator)
::clear (String::Inflections)
::columns (Sequel::Postgres::JSONTableOp::ColumnDSL)
+::configure (Sequel::Plugins::InsertReturningSelect)
+::configure (Sequel::Plugins::ClassTableInheritance)
+::configure (Sequel::Plugins::SingleTableInheritance)
+::configure (Sequel::Plugins::PreparedStatementsSafe)
+::configure (Sequel::Plugins::UnusedAssociations)
+::configure (Sequel::Plugins::SkipSavingColumns)
::configure (Sequel::Plugins::Timestamps)
+::configure (Sequel::Plugins::Serialization)
+::configure (Sequel::Plugins::PrimaryKeyLookupCheckValues)
::configure (Sequel::Plugins::AutoValidations)
-::configure (Sequel::Plugins::AssociationDependencies)
-::configure (Sequel::Plugins::InsertReturningSelect)
-::configure (Sequel::Plugins::InsertConflict)
-::configure (Sequel::Plugins::TypecastOnLoad)
-::configure (Sequel::Plugins::PgRow)
-::configure (Sequel::Plugins::StaticCacheCache)
-::configure (Sequel::Plugins::InputTransformer)
+::configure (Sequel::Plugins::InstanceFilters)
+::configure (Sequel::Plugins::UpdateRefresh)
::configure (Sequel::Plugins::CsvSerializer)
-::configure (Sequel::Plugins::PgXminOptimisticLocking)
-::configure (Sequel::Plugins::AutoValidationsConstraintValidationsPresenceMessage)
-::configure (Sequel::Plugins::ConstraintValidations)
-::configure (Sequel::Plugins::PgAutoConstraintValidations)
-::configure (Sequel::Plugins::DefaultsSetter)
-::configure (Sequel::Plugins::BooleanReaders)
::configure (Sequel::Plugins::SqlComments)
-::configure (Sequel::Plugins::PreparedStatementsSafe)
-::configure (Sequel::Plugins::ConcurrentEagerLoading)
-::configure (Sequel::Plugins::InstanceFilters)
-::configure (Sequel::Plugins::PrimaryKeyLookupCheckValues)
-::configure (Sequel::Plugins::StringStripper)
-::configure (Sequel::Plugins::RequireValidSchema)
-::configure (Sequel::Plugins::AssociationProxies)
+::configure (Sequel::Plugins::StaticCache)
::configure (Sequel::Plugins::OptimisticLocking)
-::configure (Sequel::Plugins::JsonSerializer)
-::configure (Sequel::Plugins::MssqlOptimisticLocking)
-::configure (Sequel::Plugins::SkipSavingColumns)
-::configure (Sequel::Plugins::Serialization)
::configure (Sequel::Plugins::Uuid)
+::configure (Sequel::Plugins::DefaultsSetter)
+::configure (Sequel::Plugins::TypecastOnLoad)
+::configure (Sequel::Plugins::AutoValidationsConstraintValidationsPresenceMessage)
+::configure (Sequel::Plugins::AssociationProxies)
+::configure (Sequel::Plugins::ConcurrentEagerLoading)
+::configure (Sequel::Plugins::PgXminOptimisticLocking)
+::configure (Sequel::Plugins::AssociationDependencies)
+::configure (Sequel::Plugins::ColumnSelect)
::configure (Sequel::Plugins::ColumnEncryption)
+::configure (Sequel::Plugins::InputTransformer)
::configure (Sequel::Plugins::ForceEncoding)
+::configure (Sequel::Plugins::InstanceSpecificDefault)
+::configure (Sequel::Plugins::TableSelect)
+::configure (Sequel::Plugins::PgRow)
+::configure (Sequel::Plugins::MssqlOptimisticLocking)
+::configure (Sequel::Plugins::JsonSerializer)
+::configure (Sequel::Plugins::PgAutoConstraintValidations)
+::configure (Sequel::Plugins::BooleanReaders)
+::configure (Sequel::Plugins::StaticCacheCache)
::configure (Sequel::Plugins::BooleanSubsets)
::configure (Sequel::Plugins::Caching)
-::configure (Sequel::Plugins::List)
-::configure (Sequel::Plugins::StaticCache)
-::configure (Sequel::Plugins::LazyAttributes)
-::configure (Sequel::Plugins::UnusedAssociations)
-::configure (Sequel::Plugins::SingleTableInheritance)
+::configure (Sequel::Plugins::StringStripper)
::configure (Sequel::Plugins::ColumnConflicts)
-::configure (Sequel::Plugins::InstanceSpecificDefault)
+::configure (Sequel::Plugins::InsertConflict)
+::configure (Sequel::Plugins::ConstraintValidations)
::configure (Sequel::Plugins::Touch)
-::configure (Sequel::Plugins::UpdateRefresh)
-::configure (Sequel::Plugins::ClassTableInheritance)
-::configure (Sequel::Plugins::TableSelect)
-::configure (Sequel::Plugins::ColumnSelect)
+::configure (Sequel::Plugins::List)
+::configure (Sequel::Plugins::LazyAttributes)
+::configure (Sequel::Plugins::RequireValidSchema)
::core_extensions? (Sequel)
::create (Sequel::MigrationDSL)
::db_parse_json (Sequel::Postgres::JSONDatabaseMethods)
@@ -263,30 +263,30 @@
::define_async_method (Sequel::Database::AsyncThreadPool::DatasetMethods)
::descendants (Sequel::Migration)
::empty (Sequel::Postgres::PGRange)
-::extended (Sequel::Postgres::PGArray::DatabaseMethods)
-::extended (Sequel::ConnectionValidator)
-::extended (Sequel::DatabaseQuery)
-::extended (Sequel::ConstantSqlOverride::DatabaseMethods)
-::extended (Sequel::Database::AsyncThreadPool::DatabaseMethods)
-::extended (Database::SQLComments)
+::extended (Sequel::ConstraintValidations)
::extended (Sequel::Postgres::ExtendedDateSupport)
+::extended (Sequel::DatabaseQuery)
::extended (Sequel::Postgres::EnumDatabaseMethods)
-::extended (Sequel::Postgres::InetDatabaseMethods)
+::extended (Sequel::Database::AsyncThreadPool::DatabaseMethods)
+::extended (Sequel::Postgres::PGArray::DatabaseMethods)
::extended (Sequel::Postgres::PGMultiRange::DatabaseMethods)
-::extended (Sequel::IdentifierMangling::DatabaseMethods)
-::extended (Sequel::IndexCaching)
-::extended (Sequel::Postgres::HStore::DatabaseMethods)
-::extended (Sequel::ConstraintValidations)
-::extended (Sequel::ServerLogging)
::extended (Sequel::ServerBlock)
-::extended (Sequel::Postgres::IntervalDatabaseMethods)
-::extended (Sequel::Postgres::PGRow::DatabaseMethods)
-::extended (Sequel::Postgres::JSONDatabaseMethods)
::extended (Sequel::Postgres::AutoParameterize::DatabaseMethods)
-::extended (Sequel::SQLLogNormalizer)
-::extended (Sequel::Postgres::Timestamptz)
+::extended (Sequel::Postgres::InetDatabaseMethods)
+::extended (Sequel::ConnectionValidator)
+::extended (Sequel::Postgres::PGRow::DatabaseMethods)
+::extended (Sequel::Postgres::IntervalDatabaseMethods)
+::extended (Sequel::ServerLogging)
::extended (Sequel::ConnectionExpiration)
::extended (Sequel::Postgres::PGRange::DatabaseMethods)
+::extended (Sequel::IdentifierMangling::DatabaseMethods)
+::extended (Sequel::Postgres::HStore::DatabaseMethods)
+::extended (Database::SQLComments)
+::extended (Sequel::SQLLogNormalizer)
+::extended (Sequel::Postgres::JSONDatabaseMethods)
+::extended (Sequel::IndexCaching)
+::extended (Sequel::Postgres::Timestamptz)
+::extended (Sequel::ConstantSqlOverride::DatabaseMethods)
::from_range (Sequel::Postgres::PGRange)
::inflections (String)
::inherited (Sequel::Migration)
@@ -299,47 +299,47 @@
::literal_duration (Sequel::Postgres::IntervalDatabaseMethods)
::migration (Sequel)
::migrator_class (Sequel::Migrator)
-::new (Sequel::Postgres::JSONBSubscriptOp)
-::new (Sequel::Postgres::JSONTableOp)
-::new (Sequel::Postgres::JSONTableOp::ColumnDSL)
-::new (Sequel::Postgres::JSONValueOp)
-::new (Sequel::Postgres::PGArray)
+::new (Sequel::SQL::StringAgg)
+::new (Sequel::Plugins::AssociationProxies::AssociationProxy)
+::new (Sequel::Plugins::ValidationClassMethods::ClassMethods::Generator)
+::new (Sequel::SQL::IsDistinctFrom)
+::new (Sequel::SQL::EscapedLikeExpression)
+::new (Sequel::SQL::DateAdd)
::new (Sequel::Plugins::AfterInitialize::InstanceMethods)
-::new (Sequel::Postgres::PGArray::Creator)
+::new (Sequel::Postgres::PGRow::Parser)
+::new (Sequel::Postgres::AutoParameterize::PlaceholderLiteralizer)
+::new (Sequel::Postgres::PGRange::Parser)
+::new (Sequel::Postgres::PGRange)
+::new (Sequel::ToDot)
+::new (Sequel::Dataset::Query)
::new (Sequel::Database::AsyncThreadPool::Proxy)
::new (Sequel::Database::AsyncThreadPool::PreemptableProxy)
-::new (Sequel::Postgres::PGArray::Parser)
-::new (Sequel::Postgres::PGMultiRange)
+::new (Sequel::TimestampMigrator)
+::new (Sequel::Plugins::JsonSerializer::Literal)
::new (Sequel::Database::AsyncThreadPool::BaseProxy)
-::new (Sequel::Migrator)
-::new (Sequel::Postgres::PGMultiRange::Creator)
+::new (Sequel::Postgres::HStoreSubscriptOp)
+::new (Sequel::Postgres::InetOp)
+::new (Sequel::StdioLogger)
+::new (Sequel::Postgres::JSONBSubscriptOp)
+::new (Sequel::SimpleMigration)
+::new (Sequel::MigrationDSL)
::new (Sequel::Postgres::PGMultiRange::Parser)
-::new (Sequel::Postgres::JSONQueryOp)
-::new (Sequel::Postgres::JSONExistsOp)
-::new (Sequel::Postgres::PGRange)
-::new (Sequel::Postgres::AutoParameterize::PlaceholderLiteralizer)
-::new (Sequel::Postgres::PGRange::Parser)
::new (Sequel::ConstraintValidations::Generator)
-::new (Sequel::Postgres::PGRow::Parser)
-::new (Sequel::MigrationReverser)
-::new (Sequel::SQL::DateAdd)
-::new (Sequel::SQL::EscapedLikeExpression)
-::new (Sequel::MigrationDSL)
-::new (Sequel::SQL::IsDistinctFrom)
-::new (Sequel::SQL::StringAgg)
-::new (Sequel::Plugins::ValidationClassMethods::ClassMethods::Generator)
-::new (Sequel::Plugins::AssociationProxies::AssociationProxy)
-::new (Sequel::IntegerMigrator)
-::new (Sequel::SimpleMigration)
-::new (Sequel::StdioLogger)
-::new (Sequel::TimestampMigrator)
+::new (Sequel::Postgres::PGMultiRange::Creator)
::new (Sequel::MigrationAlterTableReverser)
-::new (Sequel::Plugins::JsonSerializer::Literal)
+::new (Sequel::Postgres::PGArray::Creator)
+::new (Sequel::Migrator)
+::new (Sequel::IntegerMigrator)
+::new (Sequel::Postgres::PGMultiRange)
+::new (Sequel::Postgres::JSONExistsOp)
+::new (Sequel::Postgres::JSONQueryOp)
+::new (Sequel::Postgres::PGArray::Parser)
+::new (Sequel::Postgres::JSONTableOp)
::new (Sequel::Migration)
-::new (Sequel::ToDot)
-::new (Sequel::Dataset::Query)
-::new (Sequel::Postgres::InetOp)
-::new (Sequel::Postgres::HStoreSubscriptOp)
+::new (Sequel::Postgres::JSONTableOp::ColumnDSL)
+::new (Sequel::Postgres::JSONValueOp)
+::new (Sequel::Postgres::PGArray)
+::new (Sequel::MigrationReverser)
::object_to_json_data (Sequel::Plugins::JsonSerializer)
::output (Sequel::ToDot)
::parse (Sequel::Postgres::HStore)
@@ -356,31 +356,31 @@
::uncountable (String::Inflections)
::use_transactions (Sequel::Migration)
::wrap (Sequel::Postgres::PGRowOp)
-#& (Hash)
#& (Sequel::CoreRefinements)
+#& (Hash)
#* (Sequel::CoreRefinements)
#* (Sequel::Postgres::PGRowOp)
#+ (Sequel::Postgres::AutoParameterize::QueryString)
+#- (Sequel::Postgres::HStoreOp)
#- (Sequel::Postgres::InetOp)
#- (Sequel::Postgres::JSONBOp)
-#- (Sequel::Postgres::HStoreOp)
-#== (Sequel::Postgres::PGRange)
#== (Sequel::Postgres::PGMultiRange)
-#=== (Sequel::Postgres::PGMultiRange)
+#== (Sequel::Postgres::PGRange)
#=== (Sequel::Postgres::PGRange)
+#=== (Sequel::Postgres::PGMultiRange)
#Bignum (Sequel::Postgres::JSONTableOp::ColumnDSL)
+#[] (Sequel::SQLite::JSONBaseOp)
+#[] (Sequel::Postgres::JSONBaseOp)
#[] (Sequel::Plugins::ActiveModel::Errors)
+#[] (Sequel::Plugins::SplitValues::InstanceMethods)
#[] (Sequel::Plugins::DefaultsSetter::InstanceMethods)
+#[] (Sequel::Postgres::ArrayOp)
#[] (Sequel::SymbolAref)
+#[] (Symbol)
#[] (Sequel::Postgres::HStoreOp)
-#[] (Sequel::Postgres::JSONBaseOp)
-#[] (Sequel::Postgres::PGRowOp)
#[] (Sequel::Plugins::AccessedColumns::InstanceMethods)
-#[] (Symbol)
-#[] (Sequel::Postgres::ArrayOp)
-#[] (Sequel::SQLite::JSONBaseOp)
#[] (Sequel::Postgres::JSONBOp)
-#[] (Sequel::Plugins::SplitValues::InstanceMethods)
+#[] (Sequel::Postgres::PGRowOp)
#[]= (Sequel::Plugins::InputTransformer::InstanceMethods)
#__value (Sequel::Database::AsyncThreadPool::BaseProxy)
#_dump (Sequel::Postgres::HStore)
@@ -396,27 +396,27 @@
#after_create (Sequel::Plugins::Touch::InstanceMethods)
#after_destroy (Sequel::Plugins::Touch::InstanceMethods)
#after_destroy (Sequel::Plugins::InstanceFilters::InstanceMethods)
-#after_destroy (Sequel::Plugins::InstanceHooks::InstanceMethods)
-#after_destroy (Sequel::Plugins::AssociationDependencies::InstanceMethods)
#after_destroy (Sequel::Plugins::List::InstanceMethods)
#after_destroy (Sequel::Plugins::ActiveModel::InstanceMethods)
+#after_destroy (Sequel::Plugins::AssociationDependencies::InstanceMethods)
+#after_destroy (Sequel::Plugins::InstanceHooks::InstanceMethods)
#after_initialize (Sequel::Plugins::AfterInitialize::InstanceMethods)
-#after_save (Sequel::Plugins::SerializationModificationDetection::InstanceMethods)
-#after_save (Sequel::Plugins::InstanceHooks::InstanceMethods)
-#after_save (Sequel::Plugins::AssociationPks::InstanceMethods)
#after_save (Sequel::Plugins::Dirty::InstanceMethods)
+#after_save (Sequel::Plugins::SerializationModificationDetection::InstanceMethods)
#after_save (Sequel::Plugins::AccessedColumns::InstanceMethods)
+#after_save (Sequel::Plugins::AssociationPks::InstanceMethods)
+#after_save (Sequel::Plugins::InstanceHooks::InstanceMethods)
#after_update (Sequel::Plugins::Touch::InstanceMethods)
+#after_update (Sequel::Plugins::UpdatePrimaryKey::InstanceMethods)
#after_update (Sequel::Plugins::InstanceFilters::InstanceMethods)
-#after_update (Sequel::Plugins::ModificationDetection::InstanceMethods)
#after_update (Sequel::Plugins::Dirty::InstanceMethods)
+#after_update (Sequel::Plugins::ModificationDetection::InstanceMethods)
#after_update (Sequel::Plugins::UpdateRefresh::InstanceMethods)
-#after_update (Sequel::Plugins::UpdatePrimaryKey::InstanceMethods)
#after_validation (Sequel::Plugins::InstanceHooks::InstanceMethods)
#akeys (Sequel::Postgres::HStoreOp)
-#all (Sequel::Plugins::EagerEach::DatasetMethods)
-#all (Sequel::Plugins::StaticCache::ClassMethods)
#all (Sequel::Postgres::ArrayOp)
+#all (Sequel::Plugins::StaticCache::ClassMethods)
+#all (Sequel::Plugins::EagerEach::DatasetMethods)
#allow_lazy_load (Sequel::Plugins::ForbidLazyLoad::InstanceMethods)
#allow_lazy_load_for_static_cache_associations (Sequel::Plugins::ForbidLazyLoad::ClassMethods)
#allow_manual_timestamp_update? (Sequel::Plugins::Timestamps::ClassMethods)
@@ -432,18 +432,18 @@
#array_from_csv (Sequel::Plugins::CsvSerializer::ClassMethods)
#array_from_json (Sequel::Plugins::JsonSerializer::ClassMethods)
#array_from_xml (Sequel::Plugins::XmlSerializer::ClassMethods)
-#array_length (Sequel::SQLite::JSONBaseOp)
#array_length (Sequel::Postgres::JSONBaseOp)
+#array_length (Sequel::SQLite::JSONBaseOp)
#array_type (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#array_type (Sequel::Plugins::PgArrayAssociations::ManyToPgArrayAssociationReflection)
#as (Sequel::SymbolAs)
#as_hash (Sequel::Plugins::StaticCache::ClassMethods)
+#associate (Sequel::Plugins::DatasetAssociations::ClassMethods)
#associate (Sequel::Plugins::AutoRestrictEagerGraph::ClassMethods)
#associate (Sequel::Plugins::UnusedAssociations::ClassMethods)
-#associate (Sequel::Plugins::DatasetAssociations::ClassMethods)
#associated (Sequel::Plugins::DatasetAssociations::DatasetMethods)
-#associated_object_keys (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#associated_object_keys (Sequel::Plugins::PgArrayAssociations::ManyToPgArrayAssociationReflection)
+#associated_object_keys (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#association_reflection (Sequel::Plugins::UnusedAssociations::ClassMethods)
#async (Sequel::Database::AsyncThreadPool::DatasetMethods)
#at_position (Sequel::Plugins::List::InstanceMethods)
@@ -454,64 +454,64 @@
#before_create (Sequel::Plugins::PreparedStatementsSafe::InstanceMethods)
#before_destroy (Sequel::Plugins::InstanceHooks::InstanceMethods)
#before_destroy (Sequel::Plugins::StaticCache::InstanceMethods)
-#before_destroy (Sequel::Plugins::AssociationDependencies::InstanceMethods)
#before_destroy (Sequel::Plugins::OptimisticLockingBase::InstanceMethods)
-#before_save (Sequel::Plugins::Tree::SingleRoot::InstanceMethods)
-#before_save (Sequel::Plugins::InstanceHooks::InstanceMethods)
+#before_destroy (Sequel::Plugins::AssociationDependencies::InstanceMethods)
#before_save (Sequel::Plugins::StaticCache::InstanceMethods)
-#before_update (Sequel::Plugins::Caching::InstanceMethods)
-#before_update (Sequel::Plugins::Timestamps::InstanceMethods)
+#before_save (Sequel::Plugins::InstanceHooks::InstanceMethods)
+#before_save (Sequel::Plugins::Tree::SingleRoot::InstanceMethods)
#before_update (Sequel::Plugins::OptimisticLockingBase::InstanceMethods)
-#before_validation (Sequel::Plugins::List::InstanceMethods)
-#before_validation (Sequel::Plugins::ClassTableInheritance::InstanceMethods)
-#before_validation (Sequel::Plugins::Uuid::InstanceMethods)
-#before_validation (Sequel::Plugins::SingleTableInheritance::InstanceMethods)
+#before_update (Sequel::Plugins::Timestamps::InstanceMethods)
+#before_update (Sequel::Plugins::Caching::InstanceMethods)
#before_validation (Sequel::Plugins::Timestamps::InstanceMethods)
#before_validation (Sequel::Plugins::Composition::InstanceMethods)
#before_validation (Sequel::Plugins::Serialization::InstanceMethods)
-#blank? (TrueClass)
+#before_validation (Sequel::Plugins::SingleTableInheritance::InstanceMethods)
+#before_validation (Sequel::Plugins::ClassTableInheritance::InstanceMethods)
+#before_validation (Sequel::Plugins::Uuid::InstanceMethods)
+#before_validation (Sequel::Plugins::List::InstanceMethods)
+#blank? (FalseClass)
#blank? (NilClass)
#blank? (Numeric)
#blank? (Object)
#blank? (String)
-#blank? (FalseClass)
+#blank? (TrueClass)
#bound_variable_arg (Sequel::Postgres::PGMultiRange::DatabaseMethods)
-#bound_variable_arg (Sequel::Postgres::HStore::DatabaseMethods)
+#bound_variable_arg (Sequel::Postgres::PGRow::DatabaseMethods)
#bound_variable_arg (Sequel::Postgres::PGRange::DatabaseMethods)
+#bound_variable_arg (Sequel::Postgres::PGArray::DatabaseMethods)
#bound_variable_arg (Sequel::Postgres::IntervalDatabaseMethods)
-#bound_variable_arg (Sequel::Postgres::InetDatabaseMethods)
+#bound_variable_arg (Sequel::Postgres::JSONDatabaseMethods)
#bound_variable_arg (Sequel::Postgres::ExtendedDateSupport)
-#bound_variable_arg (Sequel::Postgres::PGArray::DatabaseMethods)
+#bound_variable_arg (Sequel::Postgres::HStore::DatabaseMethods)
#bound_variable_arg (Sequel::Plugins::PgRow::DatabaseMethods)
-#bound_variable_arg (Sequel::Postgres::PGRow::DatabaseMethods)
-#bound_variable_arg (Sequel::Postgres::JSONDatabaseMethods)
+#bound_variable_arg (Sequel::Postgres::InetDatabaseMethods)
#cache_default_values? (Sequel::Plugins::DefaultsSetter::ClassMethods)
#cache_delete_pk (Sequel::Plugins::Caching::ClassMethods)
+#cache_get_pk (Sequel::Plugins::Caching::ClassMethods)
#cache_get_pk (Sequel::Plugins::StaticCache::ForbidLazyLoadClassMethods)
#cache_get_pk (Sequel::Plugins::StaticCache::ClassMethods)
-#cache_get_pk (Sequel::Plugins::Caching::ClassMethods)
#cache_key (Sequel::Plugins::Caching::InstanceMethods)
#cache_key (Sequel::Plugins::Caching::ClassMethods)
#cache_key_prefix (Sequel::Plugins::Caching::ClassMethods)
#calculate_values_hashes (Sequel::Plugins::ModificationDetection::InstanceMethods)
-#call (Sequel::Plugins::SplitValues::ClassMethods)
+#call (Sequel::Postgres::PGRange::Parser)
#call (Sequel::Plugins::AfterInitialize::ClassMethods)
-#call (Sequel::Plugins::TypecastOnLoad::ClassMethods)
-#call (Sequel::Postgres::PGRow::Parser)
-#call (Sequel::Postgres::PGArray::Creator)
#call (Sequel::Plugins::ModificationDetection::ClassMethods)
-#call (Sequel::Postgres::PGRange::Parser)
#call (Sequel::Postgres::PGMultiRange::Creator)
+#call (Sequel::Postgres::PGRow::Parser)
+#call (Sequel::Plugins::SplitValues::ClassMethods)
#call (Sequel::Postgres::IntervalDatabaseMethods::Parser)
+#call (Sequel::Plugins::TypecastOnLoad::ClassMethods)
#call (Sequel::Plugins::ForceEncoding::ClassMethods)
+#call (Sequel::Postgres::PGArray::Creator)
#camelcase (String)
#camelize (String)
-#can_have_associated_objects? (Sequel::Plugins::PgArrayAssociations::ManyToPgArrayAssociationReflection)
#can_have_associated_objects? (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
+#can_have_associated_objects? (Sequel::Plugins::PgArrayAssociations::ManyToPgArrayAssociationReflection)
#cardinality (Sequel::Postgres::ArrayOp)
+#case (Array)
#case (Sequel::CoreRefinements)
#case (Hash)
-#case (Array)
#cast_sql_append (Sequel::Postgres::AutoParameterize::DatasetMethods)
#change (Sequel::MigrationDSL)
#changed_columns (Sequel::Plugins::SerializationModificationDetection::InstanceMethods)
@@ -528,38 +528,38 @@
#column_previously_changed? (Sequel::Plugins::Dirty::InstanceMethods)
#column_previously_was (Sequel::Plugins::Dirty::InstanceMethods)
#column_schema_to_ruby_type (Sequel::SchemaDumper)
-#columns (Sequel::Postgres::PGRow::HashRow)
-#columns (Sequel::Dataset::NullDataset)
#columns (Sequel::ColumnsIntrospection)
+#columns (Sequel::Dataset::NullDataset)
+#columns (Sequel::Postgres::PGRow::HashRow)
#columns! (Sequel::Plugins::EagerEach::DatasetMethods)
#comment (Sequel::SQLComments)
#complex_expression_sql_append (Sequel::Postgres::AutoParameterize::DatasetMethods)
-#complex_expression_sql_append (Sequel::Dataset::SetLiteralizer)
#complex_expression_sql_append (Sequel::Dataset::SplitArrayNil)
+#complex_expression_sql_append (Sequel::Dataset::SetLiteralizer)
#complex_expression_sql_append (Sequel::Postgres::AutoParameterizeInArray)
#composition (Sequel::Plugins::Composition::ClassMethods)
#compositions (Sequel::Plugins::Composition::InstanceMethods)
-#concat (Sequel::Postgres::ArrayOp)
#concat (Sequel::Postgres::JSONBOp)
+#concat (Sequel::Postgres::ArrayOp)
#concat (Sequel::Postgres::HStoreOp)
#connect (Sequel::ServerLogging)
#constant_sql_append (Sequel::ConstantSqlOverride::DatasetMethods)
#constantize (String)
#constraint (Sequel::ConstraintValidations::AlterTableGeneratorMethods)
-#contain_all (Sequel::Postgres::HStoreOp)
#contain_all (Sequel::Postgres::JSONBOp)
-#contain_any (Sequel::Postgres::JSONBOp)
+#contain_all (Sequel::Postgres::HStoreOp)
#contain_any (Sequel::Postgres::HStoreOp)
-#contained_by (Sequel::Postgres::ArrayOp)
-#contained_by (Sequel::Postgres::JSONBOp)
+#contain_any (Sequel::Postgres::JSONBOp)
#contained_by (Sequel::Postgres::HStoreOp)
-#contains (Sequel::Postgres::HStoreOp)
-#contains (Sequel::Postgres::ArrayOp)
+#contained_by (Sequel::Postgres::JSONBOp)
+#contained_by (Sequel::Postgres::ArrayOp)
#contains (Sequel::Postgres::JSONBOp)
+#contains (Sequel::Postgres::ArrayOp)
+#contains (Sequel::Postgres::HStoreOp)
#convert_infinite_timestamps= (Sequel::Postgres::ExtendedDateSupport)
#count (Sequel::Plugins::StaticCache::ClassMethods)
-#cover? (Sequel::Postgres::PGRange)
#cover? (Sequel::Postgres::PGMultiRange)
+#cover? (Sequel::Postgres::PGRange)
#create_constraint_validations_table (Sequel::ConstraintValidations)
#create_enum (Sequel::Postgres::EnumDatabaseMethods)
#create_static_cache_update_function (Sequel::Postgres::StaticCacheUpdater)
@@ -584,15 +584,15 @@
#debug (Sequel::StdioLogger)
#def_dataset_method (Sequel::Plugins::DefDatasetMethod::ClassMethods)
#default_associated_key_alias (Sequel::Plugins::ManyThroughMany::ManyThroughManyAssociationReflection)
-#default_key (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#default_key (Sequel::Plugins::PgArrayAssociations::ManyToPgArrayAssociationReflection)
+#default_key (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#default_static_cache_update_name (Sequel::Postgres::StaticCacheUpdater)
#define_composition_accessor (Sequel::Plugins::Composition::ClassMethods)
#defined (Sequel::Postgres::HStoreOp)
+#delete (Sequel::Plugins::ClassTableInheritance::InstanceMethods)
#delete (Sequel::Postgres::HStoreOp)
-#delete (Sequel::Dataset::NullDataset)
#delete (Sequel::Plugins::Caching::InstanceMethods)
-#delete (Sequel::Plugins::ClassTableInheritance::InstanceMethods)
+#delete (Sequel::Dataset::NullDataset)
#delete_path (Sequel::Postgres::JSONBOp)
#delete_unused_associations_files (Sequel::Plugins::UnusedAssociations::ClassMethods)
#demodulize (String)
@@ -625,12 +625,12 @@
#dump_table_schema (Sequel::SchemaDumper)
#each (Sequel::Plugins::ForbidLazyLoad::DatasetMethods)
#each (Sequel::Postgres::HStoreOp)
+#each (Sequel::Dataset::NullDataset)
+#each (Sequel::Postgres::JSONBaseOp)
#each (Sequel::Plugins::EagerEach::DatasetMethods)
#each (Sequel::GraphEach)
#each (Sequel::Plugins::StaticCache::ClassMethods)
-#each (Sequel::Dataset::NullDataset)
#each (Sequel::SQLite::JSONBaseOp)
-#each (Sequel::Postgres::JSONBaseOp)
#each_page (Sequel::DatasetPagination)
#each_text (Sequel::Postgres::JSONBaseOp)
#eager_graph_build_associations (Sequel::Plugins::EagerGraphEager::DatasetMethods)
@@ -650,6 +650,7 @@
#escaped_ilike (Sequel::SQL::StringMethods)
#escaped_like (Sequel::SQL::StringMethods)
#eval_inspect (Sequel::EvalInspect)
+#exclude (Sequel::Plugins::SubsetConditions::DatasetModuleMethods)
#exclude_begin? (Sequel::Postgres::PGRange)
#exclude_end? (Sequel::Postgres::PGRange)
#exclude_or_null (Sequel::ExcludeOrNull)
@@ -657,8 +658,8 @@
#exclude_where (Sequel::Sequel4DatasetMethods)
#execute (Sequel::Postgres::AutoParameterize::DatabaseMethods)
#exist? (Sequel::Postgres::HStoreOp)
-#exists (Sequel::Postgres::JSONTableOp::ColumnDSL)
#exists (Sequel::Postgres::JSONBaseOp)
+#exists (Sequel::Postgres::JSONTableOp::ColumnDSL)
#extract (Sequel::Postgres::JSONBaseOp)
#extract (Sequel::SQLite::JSONBaseOp)
#extract_text (Sequel::Postgres::JSONBaseOp)
@@ -674,61 +675,61 @@
#finalize_settings (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#find_or_new (Sequel::Plugins::UpdateOrCreate::ClassMethods)
#finder (Sequel::Plugins::Finder::ClassMethods)
-#first (Sequel::Plugins::StaticCache::ForbidLazyLoadClassMethods)
#first (Sequel::Plugins::StaticCache::ClassMethods)
+#first (Sequel::Plugins::StaticCache::ForbidLazyLoadClassMethods)
#first_page? (Sequel::Dataset::Pagination)
#forbid_lazy_load (Sequel::Plugins::ForbidLazyLoad::InstanceMethods)
#foreign_key (String)
-#freeze (Sequel::Plugins::WhitelistSecurity::ClassMethods)
+#freeze (Sequel::Plugins::Serialization::InstanceMethods)
#freeze (Sequel::Postgres::PGMultiRange::DatabaseMethods)
-#freeze (Sequel::Plugins::UpdateRefresh::ClassMethods)
+#freeze (Sequel::Plugins::PreparedStatementsSafe::ClassMethods)
#freeze (Sequel::Plugins::ValidationClassMethods::ClassMethods)
-#freeze (Sequel::Plugins::ColumnConflicts::ClassMethods)
-#freeze (Sequel::Postgres::AutoParameterize::QueryString)
-#freeze (Sequel::Plugins::SingleTableInheritance::ClassMethods)
-#freeze (Sequel::Plugins::JsonSerializer::ClassMethods)
-#freeze (Sequel::Plugins::BlacklistSecurity::ClassMethods)
+#freeze (Sequel::Plugins::Tree::ClassMethods)
+#freeze (Sequel::Plugins::Dirty::InstanceMethods)
+#freeze (Sequel::Plugins::Serialization::ClassMethods)
+#freeze (Sequel::Plugins::UpdateRefresh::ClassMethods)
+#freeze (Sequel::Plugins::CsvSerializer::ClassMethods)
#freeze (Sequel::Plugins::InputTransformer::ClassMethods)
-#freeze (Sequel::Plugins::DefaultsSetter::ClassMethods)
-#freeze (Sequel::Plugins::UnusedAssociations::ClassMethods)
+#freeze (Sequel::Postgres::PGRow::DatabaseMethods)
+#freeze (Sequel::Plugins::ConstraintValidations::ClassMethods)
+#freeze (Sequel::Plugins::AssociationDependencies::ClassMethods)
#freeze (Sequel::ConstantSqlOverride::DatabaseMethods)
#freeze (Sequel::Plugins::AutoValidations::ClassMethods)
-#freeze (Sequel::Plugins::ClassTableInheritance::ClassMethods)
-#freeze (Sequel::Plugins::HookClassMethods::ClassMethods)
-#freeze (Sequel::Plugins::CsvSerializer::ClassMethods)
-#freeze (Sequel::Plugins::LazyAttributes::ClassMethods)
-#freeze (Sequel::Plugins::TypecastOnLoad::ClassMethods)
-#freeze (Sequel::Plugins::ConstraintValidations::ClassMethods)
#freeze (Sequel::Plugins::SerializationModificationDetection::InstanceMethods)
-#freeze (Sequel::Postgres::PGRange::DatabaseMethods)
-#freeze (Sequel::Plugins::InstanceFilters::InstanceMethods)
-#freeze (Sequel::Plugins::AssociationDependencies::ClassMethods)
-#freeze (Sequel::Postgres::PGRow::DatabaseMethods)
-#freeze (Sequel::Plugins::Finder::ClassMethods)
-#freeze (Sequel::Plugins::Dirty::InstanceMethods)
-#freeze (Sequel::Postgres::PGArray::DatabaseMethods)
-#freeze (Sequel::Plugins::Serialization::InstanceMethods)
-#freeze (Sequel::Plugins::PreparedStatementsSafe::ClassMethods)
-#freeze (Sequel::Plugins::Tree::ClassMethods)
+#freeze (Sequel::Plugins::BlacklistSecurity::ClassMethods)
+#freeze (Sequel::Plugins::WhitelistSecurity::ClassMethods)
+#freeze (Sequel::Plugins::LazyAttributes::ClassMethods)
+#freeze (Sequel::Plugins::JsonSerializer::ClassMethods)
#freeze (Sequel::Plugins::Composition::InstanceMethods)
-#freeze (Sequel::Plugins::Serialization::ClassMethods)
-#freeze (Sequel::Plugins::ActiveModel::ClassMethods)
#freeze (Sequel::Plugins::Touch::ClassMethods)
#freeze (Sequel::Plugins::Composition::ClassMethods)
+#freeze (Sequel::Postgres::PGArray::DatabaseMethods)
+#freeze (Sequel::Plugins::InstanceFilters::InstanceMethods)
+#freeze (Sequel::Plugins::UnusedAssociations::ClassMethods)
+#freeze (Sequel::Plugins::DefaultsSetter::ClassMethods)
+#freeze (Sequel::Plugins::SingleTableInheritance::ClassMethods)
+#freeze (Sequel::Postgres::PGRange::DatabaseMethods)
+#freeze (Sequel::Plugins::ClassTableInheritance::ClassMethods)
+#freeze (Sequel::Postgres::AutoParameterize::QueryString)
+#freeze (Sequel::Plugins::Finder::ClassMethods)
+#freeze (Sequel::Plugins::ActiveModel::ClassMethods)
+#freeze (Sequel::Plugins::TypecastOnLoad::ClassMethods)
+#freeze (Sequel::Plugins::ColumnConflicts::ClassMethods)
+#freeze (Sequel::Plugins::HookClassMethods::ClassMethods)
#freeze (Sequel::Plugins::NestedAttributes::ClassMethods)
#freeze_descendants (Sequel::Plugins::Subclasses::ClassMethods)
#freeze_descendents (Sequel::Plugins::Subclasses::ClassMethods)
-#from (Sequel::MSSQL::EmulateLateralWithApply)
#from (Sequel::Dataset::DatasetSourceAlias)
+#from (Sequel::MSSQL::EmulateLateralWithApply)
#from_csv (Sequel::Plugins::CsvSerializer::InstanceMethods)
#from_csv (Sequel::Plugins::CsvSerializer::ClassMethods)
-#from_json (Sequel::Plugins::JsonSerializer::InstanceMethods)
#from_json (Sequel::Plugins::JsonSerializer::ClassMethods)
+#from_json (Sequel::Plugins::JsonSerializer::InstanceMethods)
#from_json_node (Sequel::Plugins::JsonSerializer::InstanceMethods)
-#from_xml (Sequel::Plugins::XmlSerializer::ClassMethods)
#from_xml (Sequel::Plugins::XmlSerializer::InstanceMethods)
-#from_xml_node (Sequel::Plugins::XmlSerializer::ClassMethods)
+#from_xml (Sequel::Plugins::XmlSerializer::ClassMethods)
#from_xml_node (Sequel::Plugins::XmlSerializer::InstanceMethods)
+#from_xml_node (Sequel::Plugins::XmlSerializer::ClassMethods)
#get (Sequel::Postgres::JSONBaseOp)
#get (Sequel::SQLite::JSONBaseOp)
#get_column_conflict! (Sequel::Plugins::ColumnConflicts::ClassMethods)
@@ -744,36 +745,36 @@
#hash (Sequel::Postgres::PGRange)
#hook_blocks (Sequel::Plugins::HookClassMethods::ClassMethods)
#hook_methods_for (Sequel::Plugins::HookClassMethods::ClassMethods)
-#hstore (Sequel::SQL::Builders)
-#hstore (Sequel::CoreRefinements)
-#hstore (Hash)
#hstore (Sequel::Postgres::ArrayOp)
+#hstore (Hash)
#hstore (Sequel::Postgres::HStoreOp)
#hstore (Sequel::Postgres::HStoreOpMethods)
+#hstore (Sequel::SQL::Builders)
+#hstore (Sequel::CoreRefinements)
#hstore_op (Sequel::SQL::Builders)
#humanize (String)
-#identifier (Sequel::CoreRefinements)
#identifier (Symbol)
+#identifier (Sequel::CoreRefinements)
#identifier_input_method (Sequel::IdentifierMangling::DatasetMethods)
#identifier_input_method= (Sequel::IdentifierMangling::DatabaseMethods)
#identifier_output_method (Sequel::IdentifierMangling::DatasetMethods)
#identifier_output_method= (Sequel::IdentifierMangling::DatabaseMethods)
#implicit_table_name (Sequel::Plugins::SingularTableNames::ClassMethods)
-#include? (Sequel::Postgres::JSONBOp)
#include? (Sequel::Postgres::HStoreOp)
+#include? (Sequel::Postgres::JSONBOp)
#indexes (Sequel::IndexCaching)
#initial_value (Sequel::Plugins::Dirty::InstanceMethods)
#initial_values (Sequel::Plugins::Dirty::InstanceMethods)
#initialize_copy (Sequel::Plugins::AccessedColumns::InstanceMethods)
#initialize_copy (Sequel::Postgres::AutoParameterize::QueryString)
#input_transformer_order (Sequel::Plugins::InputTransformer::ClassMethods)
-#insert (Sequel::SQLite::JSONBaseOp)
#insert (Sequel::Postgres::JSONBOp)
#insert (Sequel::Dataset::NullDataset)
+#insert (Sequel::SQLite::JSONBaseOp)
#insert_conflict (Sequel::Plugins::InsertConflict::InstanceMethods)
-#inspect (Sequel::SQL::Constant)
#inspect (Sequel::SQL::Expression)
#inspect (Sequel::Postgres::AutoParameterize::QueryString)
+#inspect (Sequel::SQL::Constant)
#instance_filter (Sequel::Plugins::InstanceFilters::InstanceMethods)
#integer_outside_bigint_range_strategy (Sequel::Postgres::ExtendedIntegerSupport)
#interval (Sequel::Sequel4DatasetMethods)
@@ -790,8 +791,8 @@
#join_table (Sequel::MSSQL::EmulateLateralWithApply)
#join_table_alias (Sequel::Plugins::ManyThroughMany::ManyThroughManyAssociationReflection)
#json (Sequel::SQLite::JSONBaseOp)
-#json_serializer_opts (Sequel::Plugins::JsonSerializer::InstanceMethods)
#json_serializer_opts (Sequel::Plugins::JsonSerializer::DatasetMethods)
+#json_serializer_opts (Sequel::Plugins::JsonSerializer::InstanceMethods)
#jsonb (Sequel::SQLite::JSONBaseOp)
#key? (Sequel::Postgres::HStoreOp)
#keys (Sequel::Postgres::HStoreOp)
@@ -802,8 +803,8 @@
#length (Sequel::Postgres::ArrayOp)
#list_dataset (Sequel::Plugins::List::InstanceMethods)
#listen_for_static_cache_updates (Sequel::Postgres::StaticCacheUpdater)
-#lit (String)
#lit (Sequel::CoreRefinements)
+#lit (String)
#literal_append (Sequel::Postgres::AutoParameterize::DatasetMethods)
#literal_datetime (Sequel::Dataset::RoundTimestamps)
#literal_sqltime (Sequel::Dataset::RoundTimestamps)
@@ -815,8 +816,8 @@
#load_schema_cache? (Sequel::SchemaCaching)
#load_typecast (Sequel::Plugins::TypecastOnLoad::InstanceMethods)
#log_connection_yield (Sequel::ErrorSQL)
-#log_connection_yield (Sequel::SQLLogNormalizer)
#log_connection_yield (Sequel::CallerLogging)
+#log_connection_yield (Sequel::SQLLogNormalizer)
#log_exception (Sequel::ErrorSQL)
#loose_count (Sequel::Postgres::LooseCount)
#lower (Sequel::Postgres::ArrayOp)
@@ -825,13 +826,13 @@
#map (Sequel::Plugins::StaticCache::ClassMethods)
#marshallable! (Sequel::Plugins::TacticalEagerLoading::InstanceMethods)
#member? (Sequel::Postgres::HStoreOp)
-#merge (Sequel::Postgres::HStoreOp)
#merge (Sequel::Postgres::HStore)
-#method_missing (Sequel::Plugins::AssociationProxies::AssociationProxy)
-#method_missing (Sequel::Migration)
-#method_missing (Sequel::Database::AsyncThreadPool::BaseProxy)
+#merge (Sequel::Postgres::HStoreOp)
#method_missing (Sequel::Plugins::ValidationClassMethods::ClassMethods::Generator)
+#method_missing (Sequel::Database::AsyncThreadPool::BaseProxy)
#method_missing (Sequel::Dataset::Query)
+#method_missing (Sequel::Plugins::AssociationProxies::AssociationProxy)
+#method_missing (Sequel::Migration)
#minify (Sequel::SQLite::JSONBaseOp)
#model_name (Sequel::Plugins::ActiveModel::InstanceMethods)
#move_down (Sequel::Plugins::List::InstanceMethods)
@@ -853,16 +854,16 @@
#nullify (Sequel::Dataset::Nullifiable)
#on_duplicate_columns (Sequel::DuplicateColumnsHandler)
#one_through_many (Sequel::Plugins::ManyThroughMany::ClassMethods)
-#op (Sequel::Postgres::PGRange)
#op (Sequel::Postgres::JSONBArray)
+#op (Sequel::Postgres::PGMultiRange)
#op (Sequel::Postgres::PGArray)
#op (Sequel::Postgres::JSONHash)
#op (Sequel::Postgres::JSONBHash)
#op (Sequel::Postgres::HStore)
-#op (Sequel::Postgres::PGMultiRange)
-#op (Sequel::Postgres::PGRow::ArrayRow)
#op (Sequel::Postgres::PGRow::HashRow)
#op (Sequel::Postgres::JSONArray)
+#op (Sequel::Postgres::PGRow::ArrayRow)
+#op (Sequel::Postgres::PGRange)
#operator (Sequel::ConstraintValidations::Generator)
#order (Sequel::SQL::StringAgg)
#ordinality (Sequel::Postgres::JSONTableOp::ColumnDSL)
@@ -876,10 +877,10 @@
#paged_update (Sequel::Plugins::PagedOperations::DatasetMethods)
#paginate (Sequel::DatasetPagination)
#pagination_record_count (Sequel::Dataset::Pagination)
-#parse (Sequel::Postgres::PGRow::Splitter)
#parse (Sequel::Postgres::HStore::Parser)
-#parse (Sequel::Postgres::PGArray::Parser)
+#parse (Sequel::Postgres::PGRow::Splitter)
#parse (Sequel::Postgres::PGMultiRange::Parser)
+#parse (Sequel::Postgres::PGArray::Parser)
#patch (Sequel::SQLite::JSONBaseOp)
#path_exists (Sequel::Postgres::JSONBOp)
#path_exists! (Sequel::Postgres::JSONBOp)
@@ -894,50 +895,50 @@
#path_query_first_tz (Sequel::Postgres::JSONBOp)
#path_query_tz (Sequel::Postgres::JSONBOp)
#persisted? (Sequel::Plugins::ActiveModel::InstanceMethods)
-#pg_array (Sequel::CoreRefinements)
-#pg_array (Array)
-#pg_array (Sequel::Postgres::ArrayOp)
#pg_array (Sequel::Postgres::ArrayOpMethods)
+#pg_array (Array)
#pg_array (Sequel::SQL::Builders)
+#pg_array (Sequel::CoreRefinements)
+#pg_array (Sequel::Postgres::ArrayOp)
#pg_array_op (Sequel::SQL::Builders)
#pg_array_to_many (Sequel::Plugins::PgArrayAssociations::ClassMethods)
#pg_auto_constraint_validation_override (Sequel::Plugins::PgAutoConstraintValidations::ClassMethods)
-#pg_inet (Sequel::Postgres::InetOp)
#pg_inet (Sequel::Postgres::InetOpMethods)
+#pg_inet (Sequel::Postgres::InetOp)
#pg_inet_op (Sequel::SQL::Builders)
-#pg_json (Sequel::CoreRefinements)
-#pg_json (Sequel::Postgres::JSONOp)
#pg_json (Sequel::Postgres::JSONOpMethods)
-#pg_json (Array)
-#pg_json (Hash)
+#pg_json (Sequel::Postgres::JSONOp)
#pg_json (Sequel::SQL::Builders)
+#pg_json (Sequel::CoreRefinements)
+#pg_json (Hash)
+#pg_json (Array)
#pg_json_op (Sequel::SQL::Builders)
#pg_json_wrap (Sequel::SQL::Builders)
#pg_jsonb (Sequel::Postgres::JSONBOp)
-#pg_jsonb (Sequel::SQL::Builders)
#pg_jsonb (Sequel::Postgres::JSONOpMethods)
-#pg_jsonb (Hash)
+#pg_jsonb (Sequel::SQL::Builders)
#pg_jsonb (Sequel::CoreRefinements)
#pg_jsonb (Array)
+#pg_jsonb (Hash)
#pg_jsonb_op (Sequel::SQL::Builders)
#pg_jsonb_wrap (Sequel::SQL::Builders)
#pg_multirange (Sequel::SQL::Builders)
-#pg_range (Range)
-#pg_range (Sequel::Postgres::RangeOpMethods)
-#pg_range (Sequel::Postgres::RangeOp)
#pg_range (Sequel::SQL::Builders)
+#pg_range (Sequel::Postgres::RangeOp)
+#pg_range (Sequel::Postgres::RangeOpMethods)
+#pg_range (Range)
#pg_range (Sequel::CoreRefinements)
#pg_range_op (Sequel::SQL::Builders)
-#pg_row (Sequel::Postgres::PGRowOp::ExpressionMethods)
#pg_row (Sequel::CoreRefinements)
#pg_row (Array)
#pg_row (Sequel::SQL::Builders)
+#pg_row (Sequel::Postgres::PGRowOp::ExpressionMethods)
#pg_row_op (Sequel::SQL::Builders)
#pk_hash (Sequel::Plugins::UpdatePrimaryKey::InstanceMethods)
#placeholder_literalizer_class (Sequel::Postgres::AutoParameterize::DatasetMethods)
#pluralize (String)
-#populate (Sequel::Postgres::HStoreOp)
#populate (Sequel::Postgres::JSONBaseOp)
+#populate (Sequel::Postgres::HStoreOp)
#populate_set (Sequel::Postgres::JSONBaseOp)
#position_value (Sequel::Plugins::List::InstanceMethods)
#predicate_key (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
@@ -946,20 +947,20 @@
#pretty (Sequel::Postgres::JSONBOp)
#prev (Sequel::Plugins::List::InstanceMethods)
#prev_page (Sequel::Dataset::Pagination)
-#primary_key (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#primary_key (Sequel::Plugins::PgArrayAssociations::ManyToPgArrayAssociationReflection)
+#primary_key (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#primary_key_method (Sequel::Plugins::PgArrayAssociations::PgArrayToManyAssociationReflection)
#print (Sequel::DatasetPrinter)
#probable_columns (Sequel::ColumnsIntrospection)
#process (Sequel::ConstraintValidations::Generator)
#process_csv_serializer_opts (Sequel::Plugins::CsvSerializer::ClassMethods)
#push (Sequel::Postgres::ArrayOp)
+#query (Sequel::DatabaseQuery)
#query (Sequel::Postgres::JSONBaseOp)
#query (Sequel::DatasetQuery)
-#query (Sequel::DatabaseQuery)
#quote_identifiers= (Sequel::IdentifierMangling::DatabaseMethods)
-#quote_identifiers? (Sequel::IdentifierMangling::DatabaseMethods)
#quote_identifiers? (Sequel::IdentifierMangling::DatasetMethods)
+#quote_identifiers? (Sequel::IdentifierMangling::DatabaseMethods)
#range (Sequel::Sequel4DatasetMethods)
#reciprocal (Sequel::Plugins::ManyThroughMany::ManyThroughManyAssociationReflection)
#record_set (Sequel::Postgres::HStoreOp)
@@ -975,27 +976,27 @@
#remove_before_destroy? (Sequel::Plugins::PgArrayAssociations::ManyToPgArrayAssociationReflection)
#rename_enum (Sequel::Postgres::EnumDatabaseMethods)
#rename_enum_value (Sequel::Postgres::EnumDatabaseMethods)
-#replace (Sequel::SQLite::JSONBaseOp)
#replace (Sequel::Postgres::ArrayOp)
+#replace (Sequel::SQLite::JSONBaseOp)
#requires_sql_standard_datetimes? (Sequel::AutoCastDateAndTime)
#reset_column (Sequel::Plugins::Dirty::InstanceMethods)
-#respond_to_missing? (Sequel::Plugins::ValidationClassMethods::ClassMethods::Generator)
-#respond_to_missing? (Sequel::Migration)
#respond_to_missing? (Sequel::Database::AsyncThreadPool::BaseProxy)
+#respond_to_missing? (Sequel::Migration)
+#respond_to_missing? (Sequel::Plugins::ValidationClassMethods::ClassMethods::Generator)
#reverse (Sequel::MigrationReverser)
#reverse (Sequel::MigrationAlterTableReverser)
#revert (Sequel::MigrationDSL)
-#root (Sequel::Plugins::Tree::InstanceMethods)
#root (Sequel::Plugins::Tree::SingleRoot::ClassMethods)
+#root (Sequel::Plugins::Tree::InstanceMethods)
#root? (Sequel::Plugins::Tree::InstanceMethods)
#roots (Sequel::Plugins::Tree::DatasetMethods)
#roots_dataset (Sequel::Plugins::Tree::DatasetMethods)
#row_proc (Sequel::Plugins::Sharding::DatasetMethods)
#row_type (Sequel::Plugins::PgRow::DatabaseMethods)
#row_type (Sequel::Postgres::PGRow::DatabaseMethods)
+#run (Sequel::TimestampMigrator)
#run (Sequel::DatasetRun)
#run (Sequel::IntegerMigrator)
-#run (Sequel::TimestampMigrator)
#run_after_commit_hooks (Database::RunTransactionHooks)
#run_after_rollback_hooks (Database::RunTransactionHooks)
#run_single (Sequel::TimestampMigrator)
@@ -1003,20 +1004,20 @@
#select_remove (Sequel::SelectRemove)
#self_and_siblings (Sequel::Plugins::Tree::InstanceMethods)
#separate_query_per_table? (Sequel::Plugins::ManyThroughMany::ManyThroughManyAssociationReflection)
-#sequel_ast_transform (Sequel::Postgres::HStoreSubscriptOp)
#sequel_ast_transform (Sequel::Postgres::JSONTableOp)
#sequel_ast_transform (Sequel::Postgres::JSONBSubscriptOp)
+#sequel_ast_transform (Sequel::Postgres::HStoreSubscriptOp)
#sequel_ast_transform (Sequel::Postgres::JSONExistsOp)
+#sequel_auto_param_type (Sequel::Postgres::PGMultiRange)
#sequel_auto_param_type (Sequel::Postgres)
#sequel_auto_param_type (Sequel::Postgres::PGRow::ArrayRow)
#sequel_auto_param_type (Sequel::Postgres::PGRange)
-#sequel_auto_param_type (Sequel::Postgres::PGRow::HashRow)
#sequel_auto_param_type (Sequel::Postgres::PGArray)
-#sequel_auto_param_type (Sequel::Postgres::PGMultiRange)
#sequel_auto_param_type (Sequel::Postgres::HStore)
+#sequel_auto_param_type (Sequel::Postgres::PGRow::HashRow)
#serialize_attributes (Sequel::Plugins::Serialization::ClassMethods)
-#set (Sequel::Postgres::JSONBOp)
#set (Sequel::SQLite::JSONBaseOp)
+#set (Sequel::Postgres::JSONBOp)
#set_all (Sequel::Plugins::WhitelistSecurity::InstanceMethods)
#set_allowed_columns (Sequel::Plugins::WhitelistSecurity::ClassMethods)
#set_cache_ttl (Sequel::Plugins::Caching::ClassMethods)
@@ -1036,8 +1037,8 @@
#singularize (String)
#skeys (Sequel::Postgres::HStoreOp)
#skip_auto_param (Sequel::Postgres::AutoParameterize::QueryString)
-#skip_auto_validations (Sequel::Plugins::AutoValidations::ClassMethods)
#skip_auto_validations (Sequel::Plugins::AutoValidations::InstanceMethods)
+#skip_auto_validations (Sequel::Plugins::AutoValidations::ClassMethods)
#skip_input_transformer (Sequel::Plugins::InputTransformer::ClassMethods)
#skip_input_transformer? (Sequel::Plugins::InputTransformer::ClassMethods)
#skip_pg_auto_param (Sequel::SQL::Builders)
@@ -1054,33 +1055,33 @@
#sql_comments_dataset_methods (Sequel::Plugins::SqlComments::ClassMethods)
#sql_comments_instance_methods (Sequel::Plugins::SqlComments::ClassMethods)
#sql_expr (Array)
-#sql_expr (Sequel::CoreRefinements)
-#sql_expr (Object)
#sql_expr (Hash)
+#sql_expr (Object)
+#sql_expr (Sequel::CoreRefinements)
#sql_function (Sequel::CoreRefinements)
#sql_function (Symbol)
+#sql_literal_append (Sequel::Postgres::HStore)
#sql_literal_append (Sequel::Postgres::PGArray)
#sql_literal_append (Sequel::Postgres::PGMultiRange)
#sql_literal_append (Sequel::Plugins::PgRow::InstanceMethods)
-#sql_literal_append (Sequel::Postgres::HStore)
-#sql_literal_append (Sequel::Postgres::PGRange)
+#sql_literal_append (Sequel::Postgres::PGRow::HashRow)
#sql_literal_append (Sequel::Postgres::PGRow::ArrayRow)
#sql_literal_append (Sequel::Postgres)
-#sql_literal_append (Sequel::Postgres::PGRow::HashRow)
-#sql_negate (Hash)
+#sql_literal_append (Sequel::Postgres::PGRange)
#sql_negate (Array)
+#sql_negate (Hash)
#sql_negate (Sequel::CoreRefinements)
+#sql_or (Array)
#sql_or (Sequel::CoreRefinements)
#sql_or (Hash)
-#sql_or (Array)
-#sql_string_join (Array)
#sql_string_join (Sequel::CoreRefinements)
+#sql_string_join (Array)
#sql_value_list (Array)
#sql_value_list (Sequel::CoreRefinements)
-#sqlite_json_op (Sequel::SQL::Builders)
#sqlite_json_op (Sequel::SQLite::JSONOpMethods)
-#sqlite_jsonb_op (Sequel::SQL::Builders)
+#sqlite_json_op (Sequel::SQL::Builders)
#sqlite_jsonb_op (Sequel::SQLite::JSONOpMethods)
+#sqlite_jsonb_op (Sequel::SQL::Builders)
#static_cache_allow_modifications? (Sequel::Plugins::StaticCache::ClassMethods)
#sti_class_from_key (Sequel::Plugins::ClassTableInheritance::ClassMethods)
#sti_class_from_sti_key (Sequel::Plugins::SingleTableInheritance::ClassMethods)
@@ -1099,9 +1100,9 @@
#table (Sequel::Postgres::JSONBaseOp)
#table_name (Sequel::Plugins::ClassTableInheritance::ClassMethods)
#tableize (String)
+#temporarily_release_connection (Sequel::TemporarilyReleaseConnection::ShardedTimedQueue)
#temporarily_release_connection (Sequel::TemporarilyReleaseConnection::DatabaseMethods)
#temporarily_release_connection (Sequel::TemporarilyReleaseConnection::PoolMethods)
-#temporarily_release_connection (Sequel::TemporarilyReleaseConnection::ShardedTimedQueue)
#timezone= (Sequel::NamedTimezones::DatabaseMethods)
#titlecase (String)
#titleize (String)
@@ -1114,9 +1115,9 @@
#to_dot (Sequel::ToDot::DatasetMethods)
#to_hash (Sequel::Plugins::StaticCache::ClassMethods)
#to_hash_groups (Sequel::Plugins::StaticCache::ClassMethods)
-#to_json (Sequel::Plugins::JsonSerializer::InstanceMethods)
-#to_json (Sequel::Plugins::JsonSerializer::DatasetMethods)
#to_json (Sequel::Plugins::JsonSerializer::Literal)
+#to_json (Sequel::Plugins::JsonSerializer::DatasetMethods)
+#to_json (Sequel::Plugins::JsonSerializer::InstanceMethods)
#to_json_data (Sequel::Plugins::JsonSerializer::InstanceMethods)
#to_key (Sequel::Plugins::ActiveModel::InstanceMethods)
#to_matrix (Sequel::Postgres::HStoreOp)
@@ -1128,22 +1129,22 @@
#to_record (Sequel::Postgres::JSONBaseOp)
#to_recordset (Sequel::Postgres::JSONBaseOp)
#to_s_append (Sequel::Postgres::JSONExistsOp)
-#to_s_append (Sequel::Postgres::JSONBSubscriptOp)
#to_s_append (Sequel::Postgres::AutoParameterize::SkipAutoParam)
+#to_s_append (Sequel::Postgres::JSONBSubscriptOp)
+#to_s_append (Sequel::Postgres::HStoreSubscriptOp)
#to_s_append (Sequel::Postgres::JSONTableOp)
#to_s_append (Sequel::SQL::EscapedLikeExpression)
-#to_s_append (Sequel::Postgres::HStoreSubscriptOp)
-#to_sequel_blob (Sequel::CoreRefinements)
#to_sequel_blob (String)
+#to_sequel_blob (Sequel::CoreRefinements)
#to_sequel_time (String)
#to_string (Sequel::Postgres::ArrayOp)
#to_time (String)
-#to_xml (Sequel::Plugins::XmlSerializer::InstanceMethods)
#to_xml (Sequel::Plugins::XmlSerializer::DatasetMethods)
+#to_xml (Sequel::Plugins::XmlSerializer::InstanceMethods)
#touch (Sequel::Plugins::Touch::InstanceMethods)
#touch_associations (Sequel::Plugins::Touch::ClassMethods)
-#transaction (Sequel::TransactionConnectionValidator)
#transaction (Sequel::MigrationDSL)
+#transaction (Sequel::TransactionConnectionValidator)
#tree (Sequel::SQLite::JSONBaseOp)
#truncate (Sequel::Dataset::NullDataset)
#type (Sequel::SQLite::JSONBaseOp)
@@ -1155,14 +1156,14 @@
#underscore (String)
#unique (Sequel::ConstraintValidations::AlterTableGeneratorMethods)
#unnest (Sequel::Postgres::ArrayOp)
-#unquoted_literal (Sequel::Postgres::HStore)
#unquoted_literal (Sequel::Postgres::PGRange)
+#unquoted_literal (Sequel::Postgres::HStore)
#unquoted_literal (Sequel::Postgres::PGMultiRange)
#unshift (Sequel::Postgres::ArrayOp)
#unused_association_options (Sequel::Plugins::UnusedAssociations::ClassMethods)
#unused_associations (Sequel::Plugins::UnusedAssociations::ClassMethods)
-#up (Sequel::Migration)
#up (Sequel::MigrationDSL)
+#up (Sequel::Migration)
#update (Sequel::Dataset::NullDataset)
#update_all (Sequel::Plugins::WhitelistSecurity::InstanceMethods)
#update_associations_coverage (Sequel::Plugins::UnusedAssociations::ClassMethods)
@@ -1177,10 +1178,10 @@
#valid (Sequel::SQLite::JSONBaseOp)
#valid? (Sequel::Plugins::ThrowFailures::InstanceMethods)
#valid_ruby_range? (Sequel::Postgres::PGRange)
-#validate (Sequel::Plugins::ConstraintValidations::InstanceMethods)
-#validate (Sequel::ConstraintValidations::CreateTableGeneratorMethods)
#validate (Sequel::Plugins::ValidationClassMethods::ClassMethods)
#validate (Sequel::Plugins::ValidationClassMethods::InstanceMethods)
+#validate (Sequel::ConstraintValidations::CreateTableGeneratorMethods)
+#validate (Sequel::Plugins::ConstraintValidations::InstanceMethods)
#validate (Sequel::Plugins::AutoValidations::InstanceMethods)
#validates (Sequel::Plugins::ValidationClassMethods::ClassMethods)
#validates_acceptance_of (Sequel::Plugins::ValidationClassMethods::ClassMethods)
@@ -1215,27 +1216,29 @@
#values (Sequel::Postgres::HStoreOp)
#where (Sequel::Plugins::SubsetConditions::DatasetModuleMethods)
#where (Sequel::Plugins::InvertedSubsets::DatasetModuleMethods)
+#where_all (Sequel::Plugins::SubsetConditions::DatasetModuleMethods)
+#where_any (Sequel::Plugins::SubsetConditions::DatasetModuleMethods)
#will_change_column (Sequel::Plugins::Dirty::InstanceMethods)
#with_comments (Database::SQLComments)
#with_encrypted_value (Sequel::Plugins::ColumnEncryption::DatasetMethods)
#with_identifier_input_method (Sequel::IdentifierMangling::DatasetMethods)
#with_identifier_output_method (Sequel::IdentifierMangling::DatasetMethods)
#with_pk (Sequel::Plugins::PrimaryKeyLookupCheckValues::DatasetMethods)
-#with_server (Sequel::ThreadedServerBlock)
#with_server (Sequel::ServerBlock)
#with_server (Sequel::UnthreadedServerBlock)
+#with_server (Sequel::ThreadedServerBlock)
#with_sql (Sequel::Postgres::AutoParameterize::DatasetMethods)
-#with_sql_each (Sequel::Plugins::ForbidLazyLoad::DatasetMethods)
#with_sql_each (Sequel::GraphEach)
+#with_sql_each (Sequel::Plugins::ForbidLazyLoad::DatasetMethods)
#with_sql_first (Sequel::Plugins::ForbidLazyLoad::DatasetMethods)
#xml_builder (Sequel::Plugins::XmlSerializer::ClassMethods)
#xml_deserialize_name_proc (Sequel::Plugins::XmlSerializer::ClassMethods)
#xml_serialize_name_proc (Sequel::Plugins::XmlSerializer::ClassMethods)
#| (Hash)
#| (Sequel::CoreRefinements)
-#~ (Sequel::Postgres::InetOp)
#~ (Sequel::CoreRefinements)
#~ (Hash)
+#~ (Sequel::Postgres::InetOp)
#~ (Array)
diff --git a/rdoc/classes/Sequel.html b/rdoc/classes/Sequel.html
index 05291a97c..5cbbeecab 100644
--- a/rdoc/classes/Sequel.html
+++ b/rdoc/classes/Sequel.html
@@ -434,7 +434,7 @@ Constants
MINOR
=
-85
+86
The minor version of Sequel
. Bumped for every non-patch level release, generally around once a month.
diff --git a/rdoc/classes/Sequel/Database.html b/rdoc/classes/Sequel/Database.html
index 9fd33e0bc..95cab74ba 100644
--- a/rdoc/classes/Sequel/Database.html
+++ b/rdoc/classes/Sequel/Database.html
@@ -2657,16 +2657,16 @@ Public Class methods
[show source]
# File lib/sequel/database/misc.rb
-34 def self.after_initialize(&block)
-35 raise Error, "must provide block to after_initialize" unless block
-36 Sequel.synchronize do
-37 previous = @initialize_hook
-38 @initialize_hook = proc do |db|
-39 previous.call(db)
-40 block.call(db)
-41 end
-42 end
-43 end
+39 def self.after_initialize(&block)
+40 raise Error, "must provide block to after_initialize" unless block
+41 Sequel.synchronize do
+42 previous = @initialize_hook
+43 @initialize_hook = proc do |db|
+44 previous.call(db)
+45 block.call(db)
+46 end
+47 end
+48 end
@@ -2685,9 +2685,9 @@ Public Class methods
[show source]
# File lib/sequel/database/misc.rb
-46 def self.extension(*extensions)
-47 after_initialize{|db| db.extension(*extensions)}
-48 end
+51 def self.extension(*extensions)
+52 after_initialize{|db| db.extension(*extensions)}
+53 end
@@ -2753,63 +2753,63 @@ Public Class methods
[show source]
# File lib/sequel/database/misc.rb
-149 def initialize(opts = OPTS)
-150 @opts ||= opts
-151 @opts = connection_pool_default_options.merge(@opts)
-152 @loggers = Array(@opts[:logger]) + Array(@opts[:loggers])
-153 @opts[:servers] = {} if @opts[:servers].is_a?(String)
-154 @sharded = !!@opts[:servers]
-155 @opts[:adapter_class] = self.class
-156 @opts[:single_threaded] = @single_threaded = typecast_value_boolean(@opts.fetch(:single_threaded, Sequel.single_threaded))
-157 @default_string_column_size = @opts[:default_string_column_size] || DEFAULT_STRING_COLUMN_SIZE
-158 @check_string_typecast_bytesize = typecast_value_boolean(@opts.fetch(:check_string_typecast_bytesize, true))
-159
-160 @schemas = {}
-161 @prepared_statements = {}
-162 @transactions = {}
-163 @transactions.compare_by_identity
-164 @symbol_literal_cache = {}
-165
-166 @timezone = nil
-167
-168 @dataset_class = dataset_class_default
-169 @cache_schema = typecast_value_boolean(@opts.fetch(:cache_schema, true))
-170 @dataset_modules = []
-171 @loaded_extensions = []
-172 @schema_type_classes = SCHEMA_TYPE_CLASSES.dup
-173
-174 self.sql_log_level = @opts[:sql_log_level] ? @opts[:sql_log_level].to_sym : :info
-175 self.log_warn_duration = @opts[:log_warn_duration]
-176 self.log_connection_info = typecast_value_boolean(@opts[:log_connection_info])
-177
-178 @pool = ConnectionPool.get_pool(self, @opts)
-179
-180 reset_default_dataset
-181 adapter_initialize
+154 def initialize(opts = OPTS)
+155 @opts ||= opts
+156 @opts = connection_pool_default_options.merge(@opts)
+157 @loggers = Array(@opts[:logger]) + Array(@opts[:loggers])
+158 @opts[:servers] = {} if @opts[:servers].is_a?(String)
+159 @sharded = !!@opts[:servers]
+160 @opts[:adapter_class] = self.class
+161 @opts[:single_threaded] = @single_threaded = typecast_value_boolean(@opts.fetch(:single_threaded, Sequel.single_threaded))
+162 @default_string_column_size = @opts[:default_string_column_size] || DEFAULT_STRING_COLUMN_SIZE
+163 @check_string_typecast_bytesize = typecast_value_boolean(@opts.fetch(:check_string_typecast_bytesize, true))
+164
+165 @schemas = {}
+166 @prepared_statements = {}
+167 @transactions = {}
+168 @transactions.compare_by_identity
+169 @symbol_literal_cache = {}
+170
+171 @timezone = nil
+172
+173 @dataset_class = dataset_class_default
+174 @cache_schema = typecast_value_boolean(@opts.fetch(:cache_schema, true))
+175 @dataset_modules = []
+176 @loaded_extensions = []
+177 @schema_type_classes = SCHEMA_TYPE_CLASSES.dup
+178
+179 self.sql_log_level = @opts[:sql_log_level] ? @opts[:sql_log_level].to_sym : :info
+180 self.log_warn_duration = @opts[:log_warn_duration]
+181 self.log_connection_info = typecast_value_boolean(@opts[:log_connection_info])
182
-183 keep_reference = typecast_value_boolean(@opts[:keep_reference]) != false
-184 begin
-185 Sequel.synchronize{::Sequel::DATABASES.push(self)} if keep_reference
-186 Sequel::Database.run_after_initialize(self)
+183 @pool = ConnectionPool.get_pool(self, @opts)
+184
+185 reset_default_dataset
+186 adapter_initialize
187
-188 initialize_load_extensions(:preconnect_extensions)
-189
-190 if before_preconnect = @opts[:before_preconnect]
-191 before_preconnect.call(self)
-192 end
-193
-194 if typecast_value_boolean(@opts[:preconnect]) && @pool.respond_to?(:preconnect, true)
-195 concurrent = typecast_value_string(@opts[:preconnect]) == "concurrently"
-196 @pool.send(:preconnect, concurrent)
+188 keep_reference = typecast_value_boolean(@opts[:keep_reference]) != false
+189 begin
+190 Sequel.synchronize{::Sequel::DATABASES.push(self)} if keep_reference
+191 Sequel::Database.run_after_initialize(self)
+192
+193 initialize_load_extensions(:preconnect_extensions)
+194
+195 if before_preconnect = @opts[:before_preconnect]
+196 before_preconnect.call(self)
197 end
198
-199 initialize_load_extensions(:extensions)
-200 test_connection if typecast_value_boolean(@opts.fetch(:test, true)) && respond_to?(:connect, true)
-201 rescue
-202 Sequel.synchronize{::Sequel::DATABASES.delete(self)} if keep_reference
-203 raise
-204 end
-205 end
+199 if typecast_value_boolean(@opts[:preconnect]) && @pool.respond_to?(:preconnect, true)
+200 concurrent = typecast_value_string(@opts[:preconnect]) == "concurrently"
+201 @pool.send(:preconnect, concurrent)
+202 end
+203
+204 initialize_load_extensions(:extensions)
+205 test_connection if typecast_value_boolean(@opts.fetch(:test, true)) && respond_to?(:connect, true)
+206 rescue
+207 Sequel.synchronize{::Sequel::DATABASES.delete(self)} if keep_reference
+208 raise
+209 end
+210 end
@@ -2828,17 +2828,17 @@ Public Class methods
[show source]
# File lib/sequel/database/misc.rb
-55 def self.register_extension(ext, mod=nil, &block)
-56 if mod
-57 raise(Error, "cannot provide both mod and block to Database.register_extension") if block
-58 if mod.is_a?(Module)
-59 block = proc{|db| db.extend(mod)}
-60 else
-61 block = mod
-62 end
-63 end
-64 Sequel.synchronize{EXTENSIONS[ext] = block}
-65 end
+60 def self.register_extension(ext, mod=nil, &block)
+61 if mod
+62 raise(Error, "cannot provide both mod and block to Database.register_extension") if block
+63 if mod.is_a?(Module)
+64 block = proc{|db| db.extend(mod)}
+65 else
+66 block = mod
+67 end
+68 end
+69 Sequel.synchronize{EXTENSIONS[ext] = block}
+70 end
@@ -2857,9 +2857,9 @@ Public Class methods
[show source]
# File lib/sequel/database/misc.rb
-68 def self.run_after_initialize(instance)
-69 @initialize_hook.call(instance)
-70 end
+73 def self.run_after_initialize(instance)
+74 @initialize_hook.call(instance)
+75 end
Public Instance methods
@@ -2883,9 +2883,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-234 def cast_type_literal(type)
-235 type_literal(:type=>type)
-236 end
+239 def cast_type_literal(type)
+240 type_literal(:type=>type)
+241 end
@@ -2904,19 +2904,19 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-243 def extension(*exts)
-244 Sequel.extension(*exts)
-245 exts.each do |ext|
-246 if pr = Sequel.synchronize{EXTENSIONS[ext]}
-247 if Sequel.synchronize{@loaded_extensions.include?(ext) ? false : (@loaded_extensions << ext)}
-248 pr.call(self)
-249 end
-250 else
-251 raise(Error, "Extension #{ext} does not have specific support handling individual databases (try: Sequel.extension #{ext.inspect})")
-252 end
-253 end
-254 self
-255 end
+248 def extension(*exts)
+249 Sequel.extension(*exts)
+250 exts.each do |ext|
+251 if pr = Sequel.synchronize{EXTENSIONS[ext]}
+252 if Sequel.synchronize{@loaded_extensions.include?(ext) ? false : (@loaded_extensions << ext)}
+253 pr.call(self)
+254 end
+255 else
+256 raise(Error, "Extension #{ext} does not have specific support handling individual databases (try: Sequel.extension #{ext.inspect})")
+257 end
+258 end
+259 self
+260 end
@@ -2935,19 +2935,19 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-208 def freeze
-209 valid_connection_sql
-210 metadata_dataset
-211 @opts.freeze
-212 @loggers.freeze
-213 @pool.freeze
-214 @dataset_class.freeze
-215 @dataset_modules.freeze
-216 @schema_type_classes.freeze
-217 @loaded_extensions.freeze
-218 metadata_dataset
-219 super
-220 end
+213 def freeze
+214 valid_connection_sql
+215 metadata_dataset
+216 @opts.freeze
+217 @loggers.freeze
+218 @pool.freeze
+219 @dataset_class.freeze
+220 @dataset_modules.freeze
+221 @schema_type_classes.freeze
+222 @loaded_extensions.freeze
+223 metadata_dataset
+224 super
+225 end
@@ -2966,9 +2966,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-260 def from_application_timestamp(v)
-261 Sequel.convert_output_timestamp(v, timezone)
-262 end
+265 def from_application_timestamp(v)
+266 Sequel.convert_output_timestamp(v, timezone)
+267 end
@@ -2987,26 +2987,26 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-266 def inspect
-267 s = String.new
-268 s << "#<#{self.class}"
-269 s << " database_type=#{database_type}" if database_type && database_type != adapter_scheme
-270
-271 keys = [:host, :database, :user]
-272 opts = self.opts
-273 if !keys.any?{|k| opts[k]} && opts[:uri]
-274 opts = self.class.send(:options_from_uri, URI.parse(opts[:uri]))
-275 end
-276
-277 keys.each do |key|
-278 val = opts[key]
-279 if val && val != ''
-280 s << " #{key}=#{val}"
-281 end
-282 end
-283
-284 s << ">"
-285 end
+271 def inspect
+272 s = String.new
+273 s << "#<#{self.class}"
+274 s << " database_type=#{database_type}" if database_type && database_type != adapter_scheme
+275
+276 keys = [:host, :database, :user]
+277 opts = self.opts
+278 if !keys.any?{|k| opts[k]} && opts[:uri]
+279 opts = self.class.send(:options_from_uri, URI.parse(opts[:uri]))
+280 end
+281
+282 keys.each do |key|
+283 val = opts[key]
+284 if val && val != ''
+285 s << " #{key}=#{val}"
+286 end
+287 end
+288
+289 s << ">"
+290 end
@@ -3030,9 +3030,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-292 def literal(v)
-293 schema_utility_dataset.literal(v)
-294 end
+297 def literal(v)
+298 schema_utility_dataset.literal(v)
+299 end
@@ -3051,9 +3051,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-298 def literal_symbol(sym)
-299 Sequel.synchronize{@symbol_literal_cache[sym]}
-300 end
+303 def literal_symbol(sym)
+304 Sequel.synchronize{@symbol_literal_cache[sym]}
+305 end
@@ -3072,9 +3072,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-303 def literal_symbol_set(sym, lit)
-304 Sequel.synchronize{@symbol_literal_cache[sym] = lit}
-305 end
+308 def literal_symbol_set(sym, lit)
+309 Sequel.synchronize{@symbol_literal_cache[sym] = lit}
+310 end
@@ -3093,9 +3093,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-308 def prepared_statement(name)
-309 Sequel.synchronize{prepared_statements[name]}
-310 end
+313 def prepared_statement(name)
+314 Sequel.synchronize{prepared_statements[name]}
+315 end
@@ -3114,9 +3114,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-315 def quote_identifier(v)
-316 schema_utility_dataset.quote_identifier(v)
-317 end
+320 def quote_identifier(v)
+321 schema_utility_dataset.quote_identifier(v)
+322 end
@@ -3135,9 +3135,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-320 def schema_type_class(type)
-321 @schema_type_classes[type]
-322 end
+325 def schema_type_class(type)
+326 @schema_type_classes[type]
+327 end
@@ -3156,9 +3156,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-325 def serial_primary_key_options
-326 {:primary_key => true, :type => Integer, :auto_increment => true}
-327 end
+330 def serial_primary_key_options
+331 {:primary_key => true, :type => Integer, :auto_increment => true}
+332 end
@@ -3177,9 +3177,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-330 def set_prepared_statement(name, ps)
-331 Sequel.synchronize{prepared_statements[name] = ps}
-332 end
+335 def set_prepared_statement(name, ps)
+336 Sequel.synchronize{prepared_statements[name] = ps}
+337 end
@@ -3198,9 +3198,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-336 def sharded?
-337 @sharded
-338 end
+341 def sharded?
+342 @sharded
+343 end
@@ -3219,9 +3219,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-341 def timezone
-342 @timezone || Sequel.database_timezone
-343 end
+346 def timezone
+347 @timezone || Sequel.database_timezone
+348 end
@@ -3240,9 +3240,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-348 def to_application_timestamp(v)
-349 Sequel.convert_timestamp(v, timezone)
-350 end
+353 def to_application_timestamp(v)
+354 Sequel.convert_timestamp(v, timezone)
+355 end
@@ -3261,16 +3261,16 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-357 def typecast_value(column_type, value)
-358 return nil if value.nil?
-359 meth = "typecast_value_#{column_type}"
-360 begin
-361 # Allow calling private methods as per-type typecasting methods are private
-362 respond_to?(meth, true) ? send(meth, value) : value
-363 rescue ArgumentError, TypeError => e
-364 raise Sequel.convert_exception_class(e, InvalidValue)
-365 end
-366 end
+362 def typecast_value(column_type, value)
+363 return nil if value.nil?
+364 meth = "typecast_value_#{column_type}"
+365 begin
+366 # Allow calling private methods as per-type typecasting methods are private
+367 respond_to?(meth, true) ? send(meth, value) : value
+368 rescue ArgumentError, TypeError => e
+369 raise Sequel.convert_exception_class(e, InvalidValue)
+370 end
+371 end
@@ -3289,9 +3289,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-370 def uri
-371 opts[:uri]
-372 end
+375 def uri
+376 opts[:uri]
+377 end
@@ -3310,9 +3310,9 @@ Public Instance methods
[show source]
# File lib/sequel/database/misc.rb
-375 def url
-376 uri
-377 end
+380 def url
+381 uri
+382 end
diff --git a/rdoc/created.rid b/rdoc/created.rid
index bcb78f4ad..85a7a9b3e 100644
--- a/rdoc/created.rid
+++ b/rdoc/created.rid
@@ -1,6 +1,6 @@
-Tue, 01 Oct 2024 08:59:27 -0700
+Fri, 01 Nov 2024 09:22:58 -0700
README.rdoc Sun, 31 Mar 2024 10:39:03 -0700
-CHANGELOG Tue, 01 Oct 2024 08:44:47 -0700
+CHANGELOG Fri, 01 Nov 2024 09:04:27 -0700
doc/CHANGELOG.old Tue, 04 Aug 2020 18:11:34 -0700
MIT-LICENSE Tue, 03 Jan 2023 11:20:51 -0800
lib/sequel.rb Tue, 01 Aug 2017 08:12:00 -0700
@@ -14,7 +14,7 @@ lib/sequel/exceptions.rb Fri, 02 Feb 2024 13:06:09 -0800
lib/sequel/model.rb Tue, 04 Aug 2020 18:11:34 -0700
lib/sequel/sql.rb Thu, 22 Aug 2024 11:50:35 -0700
lib/sequel/timezones.rb Fri, 17 Dec 2021 16:59:47 -0800
-lib/sequel/version.rb Tue, 01 Oct 2024 08:44:47 -0700
+lib/sequel/version.rb Fri, 01 Nov 2024 09:04:27 -0700
lib/sequel/connection_pool/sharded_single.rb Fri, 17 Dec 2021 16:59:47 -0800
lib/sequel/connection_pool/sharded_threaded.rb Fri, 28 Jun 2024 09:03:32 -0700
lib/sequel/connection_pool/sharded_timed_queue.rb Mon, 12 Jun 2023 13:05:49 -0700
@@ -26,7 +26,7 @@ lib/sequel/database/dataset.rb Tue, 28 Mar 2023 14:16:05 -0700
lib/sequel/database/dataset_defaults.rb Tue, 01 Aug 2017 08:12:00 -0700
lib/sequel/database/features.rb Tue, 01 Aug 2017 08:12:00 -0700
lib/sequel/database/logging.rb Fri, 30 Aug 2019 08:15:18 -0700
-lib/sequel/database/misc.rb Thu, 08 Aug 2024 09:05:13 -0700
+lib/sequel/database/misc.rb Tue, 08 Oct 2024 08:28:45 -0700
lib/sequel/database/query.rb Wed, 21 Dec 2022 15:06:01 -0800
lib/sequel/database/schema_generator.rb Tue, 28 Mar 2023 07:40:44 -0700
lib/sequel/database/schema_methods.rb Thu, 22 Aug 2024 11:50:35 -0700
@@ -42,8 +42,8 @@ lib/sequel/dataset/prepared_statements.rb Wed, 02 Dec 2020 15:37:08 -0800
lib/sequel/dataset/query.rb Thu, 04 Apr 2024 14:06:41 -0700
lib/sequel/dataset/sql.rb Mon, 01 Jul 2024 16:32:10 -0700
lib/sequel/model/associations.rb Fri, 19 Jan 2024 15:26:00 -0800
-lib/sequel/model/base.rb Wed, 13 Mar 2024 15:29:18 -0700
-lib/sequel/model/dataset_module.rb Wed, 17 May 2023 15:31:47 -0700
+lib/sequel/model/base.rb Fri, 11 Oct 2024 15:23:17 -0700
+lib/sequel/model/dataset_module.rb Fri, 11 Oct 2024 15:23:15 -0700
lib/sequel/model/default_inflections.rb Tue, 01 Aug 2017 08:12:01 -0700
lib/sequel/model/errors.rb Mon, 09 Aug 2021 13:30:01 -0700
lib/sequel/model/exceptions.rb Mon, 18 Sep 2023 12:32:33 -0700
@@ -66,7 +66,7 @@ doc/model_hooks.rdoc Fri, 21 Oct 2022 08:19:04 -0700
doc/model_plugins.rdoc Mon, 31 Aug 2020 08:10:12 -0700
doc/mssql_stored_procedures.rdoc Tue, 01 Aug 2017 08:12:00 -0700
doc/object_model.rdoc Fri, 21 Oct 2022 08:19:04 -0700
-doc/opening_databases.rdoc Wed, 05 Jun 2024 15:25:02 -0700
+doc/opening_databases.rdoc Sun, 27 Oct 2024 20:44:24 -0700
doc/postgresql.rdoc Fri, 21 Oct 2022 08:19:04 -0700
doc/prepared_statements.rdoc Tue, 01 Aug 2017 08:12:00 -0700
doc/querying.rdoc Fri, 06 Sep 2024 09:53:34 -0700
@@ -282,5 +282,6 @@ doc/release_notes/5.82.0.txt Mon, 01 Jul 2024 08:14:55 -0700
doc/release_notes/5.83.0.txt Thu, 08 Aug 2024 09:05:13 -0700
doc/release_notes/5.84.0.txt Thu, 29 Aug 2024 16:43:54 -0700
doc/release_notes/5.85.0.txt Tue, 01 Oct 2024 08:44:47 -0700
+doc/release_notes/5.86.0.txt Fri, 01 Nov 2024 09:04:27 -0700
doc/release_notes/5.9.0.txt Fri, 01 Jun 2018 07:49:41 -0700
lib/sequel/extensions/migration.rb Fri, 02 Feb 2024 13:06:09 -0800
diff --git a/rdoc/files/CHANGELOG.html b/rdoc/files/CHANGELOG.html
index 7f72ab779..d52b047c7 100644
--- a/rdoc/files/CHANGELOG.html
+++ b/rdoc/files/CHANGELOG.html
@@ -31,13 +31,30 @@ CHANGELOG
Last Update:
-2024-10-01 08:44:47 -0700
+2024-11-01 09:04:27 -0700
-5.85.0 (2025-10-01)¶ ↑
+5.86.0 (2024-11-01)¶ ↑
+-
+
Support the :disable_dqs Database option in the sqlite adapter to disable treating double quoted values as strings (jeremyevans) (#2233)
+ -
+
Have the subset_conditions plugin support where_all and where_any methods to combine existing subsets with AND or OR (jeremyevans)
+ -
+
Have the subset_conditions plugin add *_conditions methods for exclude method calls in addition to where and subset (jeremyevans)
+ -
+
Use Ruby module naming instead of Java package naming for access to Java libraries in the jdbc adapters (kalenp) (#2235, #2236)
+ -
+
Make schema_dumper extension format options similar to Hash#inspect on Ruby 3.4+ (jeremyevans)
+ -
+
Avoid deprecation warnings on Ruby 3.4.0-preview2 (jeremyevans)
+ -
+
Handle FROM tables that are SQL::DelayedEvaluation instances when trying to get primary key values after INSERT on PostgreSQL (tomasmiguez) (#2230, #2232)
+
+
+5.85.0 (2024-10-01)¶ ↑
-
Support json_table on PostgreSQL 17+ in the pg_json_ops extension (jeremyevans)
-
diff --git a/rdoc/files/doc/opening_databases_rdoc.html b/rdoc/files/doc/opening_databases_rdoc.html
index ed0233f2f..896a5d98a 100644
--- a/rdoc/files/doc/opening_databases_rdoc.html
+++ b/rdoc/files/doc/opening_databases_rdoc.html
@@ -31,7 +31,7 @@
opening_databases.rdoc
Last Update:
-2024-06-05 15:25:02 -0700
+2024-10-27 20:44:24 -0700
@@ -399,7 +399,9 @@ sqlite¶ :readonly
+:disable_dqs
+Disable treating double quoted values as strings in DDL and DML statements (requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+).
+ :readonly
open database in read-only mode
:timeout
the busy timeout to use in milliseconds (default: 5000).
diff --git a/rdoc/files/doc/release_notes/5_86_0_txt.html b/rdoc/files/doc/release_notes/5_86_0_txt.html
new file mode 100644
index 000000000..65a3dde0e
--- /dev/null
+++ b/rdoc/files/doc/release_notes/5_86_0_txt.html
@@ -0,0 +1,100 @@
+
+
+
+5.86.0.txt
+
+
+
+
+
+
+
+
+5.86.0.txt
+
+
+doc/release_notes/5.86.0.txt
+
+
+Last Update:
+2024-11-01 09:04:27 -0700
+
+
+
+
+
+New Features¶ ↑
+-
+
The subset_conditions plugin now supports where_all and where_any methods for combining existing subsets. It also adds *_conditions methods for exclude method calls, in addition to subset and where method calls:
+
+class Album < Sequel::Model
+ plugin :subset_conditions
+
+ dataset_module do
+ where :released, Sequel::CURRENT_DATE <= :release_date
+ exclude :inactive, :active
+
+ where_all(:inactive_released, :released, :inactive)
+ where_any(:inactive_or_released, :released, :inactive)
+ end
+end
+
+Album.inactive_released.sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) AND NOT active)
+
+Album.inactive_or_released.sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) OR NOT active)
+
+Album.where(Album.inactive_conditions).sql
+# => SELECT * FROM albums WHERE NOT active
+
+Album.exclude(Album.inactive_or_released_conditions).sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE > release_date) AND active)
+
+
+In addition to making code simpler, the where_all method improves performance compared to defining a dataset method that uses a method chain to call both methods, and the where_any method improves performances even more significantly as it allows caching where the alternative approach would not allow for caching.
+ -
+
The sqlite adapter now supports the :disable_dqs Database option, to disable treating double quoted values as strings. As described by the SQLite documentation, treating double quoted values as strings instead of identifiers is a misfeature. This support requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+.
+
+
+Other Improvements¶ ↑
+-
+
On PostgreSQL, datasets using an SQL::DelayedEvaluation instance as the table now support returning the primary key for inserts and imports.
+ -
+
All jdbc adapters now use Ruby-style module naming instead of Java-style package naming (e.g. Java::OrgPostgresqlUtil::PGobject instead of org.postgresql.util.PGobject). This supports loading the Java packages in separate classloaders.
+ -
+
The schema_dumper extension now uses colons instead of hashrockets when using Ruby 3.4+ (following the Hash#inspect change in Ruby 3.4.0-preview2).
+
+
+Backwards Compatibility¶ ↑
+-
+
The schema_dumper change can break backwards compatibility for tests that expect the hashrocket format, but only on Ruby 3.4+.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rdoc/files/lib/sequel/database/misc_rb.html b/rdoc/files/lib/sequel/database/misc_rb.html
index 73e134b2d..bc58a7455 100644
--- a/rdoc/files/lib/sequel/database/misc_rb.html
+++ b/rdoc/files/lib/sequel/database/misc_rb.html
@@ -31,7 +31,7 @@ misc.rb
Last Update:
-2024-08-08 09:05:13 -0700
+2024-10-08 08:28:45 -0700
diff --git a/rdoc/files/lib/sequel/model/base_rb.html b/rdoc/files/lib/sequel/model/base_rb.html
index 28a9b9156..bdba95a11 100644
--- a/rdoc/files/lib/sequel/model/base_rb.html
+++ b/rdoc/files/lib/sequel/model/base_rb.html
@@ -31,7 +31,7 @@ base.rb
Last Update:
-2024-03-13 15:29:18 -0700
+2024-10-11 15:23:17 -0700
diff --git a/rdoc/files/lib/sequel/model/dataset_module_rb.html b/rdoc/files/lib/sequel/model/dataset_module_rb.html
index 5890054f6..dfdce4cc2 100644
--- a/rdoc/files/lib/sequel/model/dataset_module_rb.html
+++ b/rdoc/files/lib/sequel/model/dataset_module_rb.html
@@ -31,7 +31,7 @@ dataset_module.rb
Last Update:
-2023-05-17 15:31:47 -0700
+2024-10-11 15:23:15 -0700
diff --git a/rdoc/files/lib/sequel/version_rb.html b/rdoc/files/lib/sequel/version_rb.html
index 67e5c1ab8..45f06621c 100644
--- a/rdoc/files/lib/sequel/version_rb.html
+++ b/rdoc/files/lib/sequel/version_rb.html
@@ -31,7 +31,7 @@ version.rb
Last Update:
-2024-10-01 08:44:47 -0700
+2024-11-01 09:04:27 -0700
diff --git a/rdoc/fr_file_index.html b/rdoc/fr_file_index.html
index e2bc74a8f..26bbcf311 100644
--- a/rdoc/fr_file_index.html
+++ b/rdoc/fr_file_index.html
@@ -238,6 +238,7 @@
5.83.0.txt
5.84.0.txt
5.85.0.txt
+5.86.0.txt
5.9.0.txt
schema_modification.rdoc
security.rdoc
h2.rb
hsqldb.rb
jtds.rb
mysql.rb
oracle.rb
postgresql.rb
sqlanywhere.rb
sqlite.rb
sqlserver.rb
jdbc.rb
postgres.rb
postgres.rb
sqlite.rb
module
-The subset_conditions plugin creates an additional *_conditions method for every subset created, which returns the filter conditions the subset uses. This can be useful if you want to use the conditions for a separate filter or combine them with OR.
+The subset_conditions plugin creates an additional *_conditions method for every ‘subset`, `where`, and `exclude` method call in a dataset_module block. This method returns the filter conditions, which can be useful if you want to use the conditions for a separate filter or combine them with OR. It also supports where_all and where_any dataset_module methods for combining multiple dataset method filters with AND or OR.
Usage:
-# Add subset_conditions in the Album class
-Album.plugin :subset_conditions
+# Add subset_conditions in the Album class
+Album.plugin :subset_conditions
-# This will now create a published_conditions method
-Album.dataset_module do
- subset :published, published: true
-end
+Album.dataset_module do
+ # This will now create a published_conditions method
+ where :published, published: true
-Album.where(Album.published_conditions).sql
-# SELECT * FROM albums WHERE (published IS TRUE)
+ # This will now create a not_bad_conditions method
+ exclude :not_bad, :bad
-Album.exclude(Album.published_conditions).sql
-# SELECT * FROM albums WHERE (published IS NOT TRUE)
+ # This will create good_and_available and
+ # good_and_available_conditions methods
+ where_all :good_and_available, :published, :not_bad
-Album.where(Album.published_conditions | {ready: true}).sql
-# SELECT * FROM albums WHERE ((published IS TRUE) OR (ready IS TRUE))
-
+ # This will create good_or_available and
+ # good_or_available_conditions methods
+ where_any :good_or_available, :published, :not_bad
+end
+
+Album.where(Album.published_conditions).sql
+# SELECT * FROM albums WHERE (published IS TRUE)
+
+Album.exclude(Album.published_conditions).sql
+# SELECT * FROM albums WHERE (published IS NOT TRUE)
+
+Album.where(Album.published_conditions | {ready: true}).sql
+# SELECT * FROM albums WHERE ((published IS TRUE) OR (ready IS TRUE))
+
+Album.good_and_available.sql
+SELECT * FROM albums WHERE ((published IS TRUE) AND NOT bad)
+
+Album.good_or_available.sql
+SELECT * FROM albums WHERE ((published IS TRUE) OR NOT bad)
Methods
@@ -96,13 +112,13 @@ Public Class methods
[show source]
# File lib/sequel/plugins/subset_conditions.rb
-29 def self.apply(model, &block)
-30 model.instance_exec do
-31 @dataset_module_class = Class.new(@dataset_module_class) do
-32 include DatasetModuleMethods
-33 end
-34 end
-35 end
+48 def self.apply(model, &block)
+49 model.instance_exec do
+50 @dataset_module_class = Class.new(@dataset_module_class) do
+51 include DatasetModuleMethods
+52 end
+53 end
+54 end
diff --git a/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html b/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html
index e58d7f52d..93bc8f8d1 100644
--- a/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html
+++ b/rdoc-plugins/classes/Sequel/Plugins/SubsetConditions/DatasetModuleMethods.html
@@ -40,7 +40,10 @@ module
Methods
Public Instance
The subset_conditions plugin creates an additional *_conditions method for every subset created, which returns the filter conditions the subset uses. This can be useful if you want to use the conditions for a separate filter or combine them with OR.
+The subset_conditions plugin creates an additional *_conditions method for every ‘subset`, `where`, and `exclude` method call in a dataset_module block. This method returns the filter conditions, which can be useful if you want to use the conditions for a separate filter or combine them with OR. It also supports where_all and where_any dataset_module methods for combining multiple dataset method filters with AND or OR.
Usage:
-# Add subset_conditions in the Album class -Album.plugin :subset_conditions +# Add subset_conditions in the Album class +Album.plugin :subset_conditions -# This will now create a published_conditions method -Album.dataset_module do - subset :published, published: true -end +Album.dataset_module do + # This will now create a published_conditions method + where :published, published: true -Album.where(Album.published_conditions).sql -# SELECT * FROM albums WHERE (published IS TRUE) + # This will now create a not_bad_conditions method + exclude :not_bad, :bad -Album.exclude(Album.published_conditions).sql -# SELECT * FROM albums WHERE (published IS NOT TRUE) + # This will create good_and_available and + # good_and_available_conditions methods + where_all :good_and_available, :published, :not_bad -Album.where(Album.published_conditions | {ready: true}).sql -# SELECT * FROM albums WHERE ((published IS TRUE) OR (ready IS TRUE)) -+ # This will create good_or_available and + # good_or_available_conditions methods + where_any :good_or_available, :published, :not_bad +end + +Album.where(Album.published_conditions).sql +# SELECT * FROM albums WHERE (published IS TRUE) + +Album.exclude(Album.published_conditions).sql +# SELECT * FROM albums WHERE (published IS NOT TRUE) + +Album.where(Album.published_conditions | {ready: true}).sql +# SELECT * FROM albums WHERE ((published IS TRUE) OR (ready IS TRUE)) + +Album.good_and_available.sql +SELECT * FROM albums WHERE ((published IS TRUE) AND NOT bad) + +Album.good_or_available.sql +SELECT * FROM albums WHERE ((published IS TRUE) OR NOT bad)
Methods
@@ -96,13 +112,13 @@Public Class methods
[show source]# File lib/sequel/plugins/subset_conditions.rb -29 def self.apply(model, &block) -30 model.instance_exec do -31 @dataset_module_class = Class.new(@dataset_module_class) do -32 include DatasetModuleMethods -33 end -34 end -35 end+48 def self.apply(model, &block) +49 model.instance_exec do +50 @dataset_module_class = Class.new(@dataset_module_class) do +51 include DatasetModuleMethods +52 end +53 end +54 end
Methods
Public Instance
Public Instance
Public Instance methods
+Also create a method that returns the conditions the filter uses.
+ +# File lib/sequel/plugins/subset_conditions.rb +66 def exclude(name, *args, &block) +67 super +68 cond = args +69 cond = cond.first if cond.size == 1 +70 define_method(:"#{name}_conditions"){Sequel.~(filter_expr(cond, &block))} +71 end+
Public Instance methods
[show source]# File lib/sequel/plugins/subset_conditions.rb -39 def where(name, *args, &block) -40 super -41 cond = args -42 cond = cond.first if cond.size == 1 -43 define_method(:"#{name}_conditions"){filter_expr(cond, &block)} -44 end+58 def where(name, *args, &block) +59 super +60 cond = args +61 cond = cond.first if cond.size == 1 +62 define_method(:"#{name}_conditions"){filter_expr(cond, &block)} +63 end +
Create a method that combines filters from already registered dataset methods, and filters for rows where all of the conditions are satisfied.
+ +Employee.dataset_module do + where :active, active: true + where :started, Sequel::CURRENT_DATE <= :start_date + where_all(:active_and_started, :active, :started) +end + +Employee.active_and_started.sql +# SELECT * FROM employees WHERE ((active IS TRUE) AND (CURRENT_DATE <= start_date)) ++ +
# File lib/sequel/plugins/subset_conditions.rb +85 def where_all(name, *args) +86 _where_any_all(:&, name, args) +87 end+
Create a method that combines filters from already registered dataset methods, and filters for rows where any of the conditions are satisfied.
+ +Employee.dataset_module do + where :active, active: true + where :started, Sequel::CURRENT_DATE <= :start_date + where_any(:active_or_started, :active, :started) +end + +Employee.active_or_started.sql +# SELECT * FROM employees WHERE ((active IS TRUE) OR (CURRENT_DATE <= start_date)) ++ +
# File lib/sequel/plugins/subset_conditions.rb +101 def where_any(name, *args) +102 _where_any_all(:|, name, args) +103 end
Public Instance methods
[show source]# File lib/sequel/extensions/schema_dumper.rb -430 def dump_columns -431 strings = [] -432 cols = columns.dup -433 cols.each do |x| -434 x.delete(:on_delete) if x[:on_delete] == :no_action -435 x.delete(:on_update) if x[:on_update] == :no_action -436 end -437 if (pkn = primary_key_name) && !@primary_key[:keep_order] -438 cols.delete_if{|x| x[:name] == pkn} -439 pk = @primary_key.dup -440 pkname = pk.delete(:name) -441 @db.serial_primary_key_options.each{|k,v| pk.delete(k) if v == pk[k]} -442 strings << "primary_key #{pkname.inspect}#{opts_inspect(pk)}" -443 end -444 cols.each do |c| -445 c = c.dup -446 name = c.delete(:name) -447 strings << if table = c.delete(:table) -448 c.delete(:type) if c[:type] == Integer || c[:type] == 'integer' -449 "foreign_key #{name.inspect}, #{table.inspect}#{opts_inspect(c)}" -450 elsif pkn == name -451 @db.serial_primary_key_options.each{|k,v| c.delete(k) if v == c[k]} -452 "primary_key #{name.inspect}#{opts_inspect(c)}" -453 else -454 type = c.delete(:type) -455 opts = opts_inspect(c) -456 case type -457 when Class -458 "#{type.name} #{name.inspect}#{opts}" -459 when :Bignum -460 "Bignum #{name.inspect}#{opts}" -461 else -462 "column #{name.inspect}, #{type.inspect}#{opts}" -463 end -464 end -465 end -466 strings.join("\n") -467 end+442 def dump_columns +443 strings = [] +444 cols = columns.dup +445 cols.each do |x| +446 x.delete(:on_delete) if x[:on_delete] == :no_action +447 x.delete(:on_update) if x[:on_update] == :no_action +448 end +449 if (pkn = primary_key_name) && !@primary_key[:keep_order] +450 cols.delete_if{|x| x[:name] == pkn} +451 pk = @primary_key.dup +452 pkname = pk.delete(:name) +453 @db.serial_primary_key_options.each{|k,v| pk.delete(k) if v == pk[k]} +454 strings << "primary_key #{pkname.inspect}#{opts_inspect(pk)}" +455 end +456 cols.each do |c| +457 c = c.dup +458 name = c.delete(:name) +459 strings << if table = c.delete(:table) +460 c.delete(:type) if c[:type] == Integer || c[:type] == 'integer' +461 "foreign_key #{name.inspect}, #{table.inspect}#{opts_inspect(c)}" +462 elsif pkn == name +463 @db.serial_primary_key_options.each{|k,v| c.delete(k) if v == c[k]} +464 "primary_key #{name.inspect}#{opts_inspect(c)}" +465 else +466 type = c.delete(:type) +467 opts = opts_inspect(c) +468 case type +469 when Class +470 "#{type.name} #{name.inspect}#{opts}" +471 when :Bignum +472 "Bignum #{name.inspect}#{opts}" +473 else +474 "column #{name.inspect}, #{type.inspect}#{opts}" +475 end +476 end +477 end +478 strings.join("\n") +479 end
Public Instance methods
[show source]# File lib/sequel/extensions/schema_dumper.rb -471 def dump_constraints -472 cs = constraints.map do |c| -473 c = c.dup -474 type = c.delete(:type) -475 case type -476 when :check -477 raise(Error, "can't dump check/constraint specified with Proc") if c[:check].is_a?(Proc) -478 name = c.delete(:name) -479 if !name and c[:check].length == 1 and c[:check].first.is_a?(Hash) -480 "check #{c[:check].first.inspect[1...-1]}" -481 else -482 "#{name ? "constraint #{name.inspect}," : 'check'} #{c[:check].map(&:inspect).join(', ')}" -483 end -484 when :foreign_key -485 c.delete(:on_delete) if c[:on_delete] == :no_action -486 c.delete(:on_update) if c[:on_update] == :no_action -487 c.delete(:deferrable) unless c[:deferrable] -488 cols = c.delete(:columns) -489 table = c.delete(:table) -490 "#{type} #{cols.inspect}, #{table.inspect}#{opts_inspect(c)}" -491 else -492 cols = c.delete(:columns) -493 "#{type} #{cols.inspect}#{opts_inspect(c)}" -494 end -495 end -496 cs.join("\n") -497 end+483 def dump_constraints +484 cs = constraints.map do |c| +485 c = c.dup +486 type = c.delete(:type) +487 case type +488 when :check +489 raise(Error, "can't dump check/constraint specified with Proc") if c[:check].is_a?(Proc) +490 name = c.delete(:name) +491 if !name and c[:check].length == 1 and c[:check].first.is_a?(Hash) +492 "check #{c[:check].first.inspect[1...-1]}" +493 else +494 "#{name ? "constraint #{name.inspect}," : 'check'} #{c[:check].map(&:inspect).join(', ')}" +495 end +496 when :foreign_key +497 c.delete(:on_delete) if c[:on_delete] == :no_action +498 c.delete(:on_update) if c[:on_update] == :no_action +499 c.delete(:deferrable) unless c[:deferrable] +500 cols = c.delete(:columns) +501 table = c.delete(:table) +502 "#{type} #{cols.inspect}, #{table.inspect}#{opts_inspect(c)}" +503 else +504 cols = c.delete(:columns) +505 "#{type} #{cols.inspect}#{opts_inspect(c)}" +506 end +507 end +508 cs.join("\n") +509 end
Public Instance methods
[show source]# File lib/sequel/extensions/schema_dumper.rb -506 def dump_indexes(options=OPTS) -507 is = indexes.map do |c| -508 c = c.dup -509 cols = c.delete(:columns) -510 if table = options[:add_index] || options[:drop_index] -511 "#{options[:drop_index] ? 'drop' : 'add'}_index #{table.inspect}, #{cols.inspect}#{', :ignore_errors=>true' if options[:ignore_errors]}#{opts_inspect(c)}" -512 else -513 "index #{cols.inspect}#{opts_inspect(c)}" -514 end -515 end -516 is = is.reverse if options[:drop_index] -517 is.join("\n") -518 end+518 def dump_indexes(options=OPTS) +519 is = indexes.map do |c| +520 c = c.dup +521 cols = c.delete(:columns) +522 if table = options[:add_index] || options[:drop_index] +523 "#{options[:drop_index] ? 'drop' : 'add'}_index #{table.inspect}, #{cols.inspect}#{", #{IGNORE_ERRORS_KEY}true" if options[:ignore_errors]}#{opts_inspect(c)}" +524 else +525 "index #{cols.inspect}#{opts_inspect(c)}" +526 end +527 end +528 is = is.reverse if options[:drop_index] +529 is.join("\n") +530 end
Public Instance methods
[show source] -# File lib/sequel/extensions/schema_dumper.rb -90 def dump_foreign_key_migration(options=OPTS) -91 ts = _dump_tables(options) -92 <<END_MIG -93 Sequel.migration do -94 change do -95 #{ts.map{|t| dump_table_foreign_keys(t)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')} -96 end -97 end -98 END_MIG -99 end+
# File lib/sequel/extensions/schema_dumper.rb + 95 def dump_foreign_key_migration(options=OPTS) + 96 ts = _dump_tables(options) + 97 <<END_MIG + 98 Sequel.migration do + 99 change do +100 #{ts.map{|t| dump_table_foreign_keys(t)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')} +101 end +102 end +103 END_MIG +104 end
Public Instance methods
[show source]# File lib/sequel/extensions/schema_dumper.rb -108 def dump_indexes_migration(options=OPTS) -109 ts = _dump_tables(options) -110 <<END_MIG -111 Sequel.migration do -112 change do -113 #{ts.map{|t| dump_table_indexes(t, :add_index, options)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')} -114 end -115 end -116 END_MIG -117 end+113 def dump_indexes_migration(options=OPTS) +114 ts = _dump_tables(options) +115 <<END_MIG +116 Sequel.migration do +117 change do +118 #{ts.map{|t| dump_table_indexes(t, :add_index, options)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')} +119 end +120 end +121 END_MIG +122 end
Public Instance methods
[show source]# File lib/sequel/extensions/schema_dumper.rb -132 def dump_schema_migration(options=OPTS) -133 options = options.dup -134 if options[:indexes] == false && !options.has_key?(:foreign_keys) -135 # Unless foreign_keys option is specifically set, disable if indexes -136 # are disabled, as foreign keys that point to non-primary keys rely -137 # on unique indexes being created first -138 options[:foreign_keys] = false -139 end -140 -141 ts = sort_dumped_tables(_dump_tables(options), options) -142 skipped_fks = if sfk = options[:skipped_foreign_keys] -143 # Handle skipped foreign keys by adding them at the end via -144 # alter_table/add_foreign_key. Note that skipped foreign keys -145 # probably result in a broken down migration. -146 sfka = sfk.sort.map{|table, fks| dump_add_fk_constraints(table, fks.values)} -147 sfka.join("\n\n").gsub(/^/, ' ') unless sfka.empty? -148 end -149 -150 <<END_MIG -151 Sequel.migration do -152 change do -153 #{ts.map{|t| dump_table_schema(t, options)}.join("\n\n").gsub(/^/, ' ')}#{"\n \n" if skipped_fks}#{skipped_fks} -154 end -155 end -156 END_MIG -157 end+137 def dump_schema_migration(options=OPTS) +138 options = options.dup +139 if options[:indexes] == false && !options.has_key?(:foreign_keys) +140 # Unless foreign_keys option is specifically set, disable if indexes +141 # are disabled, as foreign keys that point to non-primary keys rely +142 # on unique indexes being created first +143 options[:foreign_keys] = false +144 end +145 +146 ts = sort_dumped_tables(_dump_tables(options), options) +147 skipped_fks = if sfk = options[:skipped_foreign_keys] +148 # Handle skipped foreign keys by adding them at the end via +149 # alter_table/add_foreign_key. Note that skipped foreign keys +150 # probably result in a broken down migration. +151 sfka = sfk.sort.map{|table, fks| dump_add_fk_constraints(table, fks.values)} +152 sfka.join("\n\n").gsub(/^/, ' ') unless sfka.empty? +153 end +154 +155 <<END_MIG +156 Sequel.migration do +157 change do +158 #{ts.map{|t| dump_table_schema(t, options)}.join("\n\n").gsub(/^/, ' ')}#{"\n \n" if skipped_fks}#{skipped_fks} +159 end +160 end +161 END_MIG +162 end
Public Instance methods
[show source]# File lib/sequel/extensions/schema_dumper.rb -161 def dump_table_schema(table, options=OPTS) -162 gen = dump_table_generator(table, options) -163 commands = [gen.dump_columns, gen.dump_constraints, gen.dump_indexes].reject{|x| x == ''}.join("\n\n") -164 "create_table(#{table.inspect}#{', :ignore_index_errors=>true' if !options[:same_db] && options[:indexes] != false && !gen.indexes.empty?}) do\n#{commands.gsub(/^/, ' ')}\nend" -165 end+166 def dump_table_schema(table, options=OPTS) +167 gen = dump_table_generator(table, options) +168 commands = [gen.dump_columns, gen.dump_constraints, gen.dump_indexes].reject{|x| x == ''}.join("\n\n") +169 "create_table(#{table.inspect}#{", #{IGNORE_INDEX_ERRORS_KEY}true" if !options[:same_db] && options[:indexes] != false && !gen.indexes.empty?}) do\n#{commands.gsub(/^/, ' ')}\nend" +170 end
subset_conditions.rb
Constants
The minor version of Sequel
. Bumped for every non-patch level release, generally around once a month.
Public Class methods
[show source]# File lib/sequel/database/misc.rb -34 def self.after_initialize(&block) -35 raise Error, "must provide block to after_initialize" unless block -36 Sequel.synchronize do -37 previous = @initialize_hook -38 @initialize_hook = proc do |db| -39 previous.call(db) -40 block.call(db) -41 end -42 end -43 end+39 def self.after_initialize(&block) +40 raise Error, "must provide block to after_initialize" unless block +41 Sequel.synchronize do +42 previous = @initialize_hook +43 @initialize_hook = proc do |db| +44 previous.call(db) +45 block.call(db) +46 end +47 end +48 end
Public Class methods
[show source]# File lib/sequel/database/misc.rb -46 def self.extension(*extensions) -47 after_initialize{|db| db.extension(*extensions)} -48 end+51 def self.extension(*extensions) +52 after_initialize{|db| db.extension(*extensions)} +53 end
Public Class methods
[show source]# File lib/sequel/database/misc.rb -149 def initialize(opts = OPTS) -150 @opts ||= opts -151 @opts = connection_pool_default_options.merge(@opts) -152 @loggers = Array(@opts[:logger]) + Array(@opts[:loggers]) -153 @opts[:servers] = {} if @opts[:servers].is_a?(String) -154 @sharded = !!@opts[:servers] -155 @opts[:adapter_class] = self.class -156 @opts[:single_threaded] = @single_threaded = typecast_value_boolean(@opts.fetch(:single_threaded, Sequel.single_threaded)) -157 @default_string_column_size = @opts[:default_string_column_size] || DEFAULT_STRING_COLUMN_SIZE -158 @check_string_typecast_bytesize = typecast_value_boolean(@opts.fetch(:check_string_typecast_bytesize, true)) -159 -160 @schemas = {} -161 @prepared_statements = {} -162 @transactions = {} -163 @transactions.compare_by_identity -164 @symbol_literal_cache = {} -165 -166 @timezone = nil -167 -168 @dataset_class = dataset_class_default -169 @cache_schema = typecast_value_boolean(@opts.fetch(:cache_schema, true)) -170 @dataset_modules = [] -171 @loaded_extensions = [] -172 @schema_type_classes = SCHEMA_TYPE_CLASSES.dup -173 -174 self.sql_log_level = @opts[:sql_log_level] ? @opts[:sql_log_level].to_sym : :info -175 self.log_warn_duration = @opts[:log_warn_duration] -176 self.log_connection_info = typecast_value_boolean(@opts[:log_connection_info]) -177 -178 @pool = ConnectionPool.get_pool(self, @opts) -179 -180 reset_default_dataset -181 adapter_initialize +154 def initialize(opts = OPTS) +155 @opts ||= opts +156 @opts = connection_pool_default_options.merge(@opts) +157 @loggers = Array(@opts[:logger]) + Array(@opts[:loggers]) +158 @opts[:servers] = {} if @opts[:servers].is_a?(String) +159 @sharded = !!@opts[:servers] +160 @opts[:adapter_class] = self.class +161 @opts[:single_threaded] = @single_threaded = typecast_value_boolean(@opts.fetch(:single_threaded, Sequel.single_threaded)) +162 @default_string_column_size = @opts[:default_string_column_size] || DEFAULT_STRING_COLUMN_SIZE +163 @check_string_typecast_bytesize = typecast_value_boolean(@opts.fetch(:check_string_typecast_bytesize, true)) +164 +165 @schemas = {} +166 @prepared_statements = {} +167 @transactions = {} +168 @transactions.compare_by_identity +169 @symbol_literal_cache = {} +170 +171 @timezone = nil +172 +173 @dataset_class = dataset_class_default +174 @cache_schema = typecast_value_boolean(@opts.fetch(:cache_schema, true)) +175 @dataset_modules = [] +176 @loaded_extensions = [] +177 @schema_type_classes = SCHEMA_TYPE_CLASSES.dup +178 +179 self.sql_log_level = @opts[:sql_log_level] ? @opts[:sql_log_level].to_sym : :info +180 self.log_warn_duration = @opts[:log_warn_duration] +181 self.log_connection_info = typecast_value_boolean(@opts[:log_connection_info]) 182 -183 keep_reference = typecast_value_boolean(@opts[:keep_reference]) != false -184 begin -185 Sequel.synchronize{::Sequel::DATABASES.push(self)} if keep_reference -186 Sequel::Database.run_after_initialize(self) +183 @pool = ConnectionPool.get_pool(self, @opts) +184 +185 reset_default_dataset +186 adapter_initialize 187 -188 initialize_load_extensions(:preconnect_extensions) -189 -190 if before_preconnect = @opts[:before_preconnect] -191 before_preconnect.call(self) -192 end -193 -194 if typecast_value_boolean(@opts[:preconnect]) && @pool.respond_to?(:preconnect, true) -195 concurrent = typecast_value_string(@opts[:preconnect]) == "concurrently" -196 @pool.send(:preconnect, concurrent) +188 keep_reference = typecast_value_boolean(@opts[:keep_reference]) != false +189 begin +190 Sequel.synchronize{::Sequel::DATABASES.push(self)} if keep_reference +191 Sequel::Database.run_after_initialize(self) +192 +193 initialize_load_extensions(:preconnect_extensions) +194 +195 if before_preconnect = @opts[:before_preconnect] +196 before_preconnect.call(self) 197 end 198 -199 initialize_load_extensions(:extensions) -200 test_connection if typecast_value_boolean(@opts.fetch(:test, true)) && respond_to?(:connect, true) -201 rescue -202 Sequel.synchronize{::Sequel::DATABASES.delete(self)} if keep_reference -203 raise -204 end -205 end+199 if typecast_value_boolean(@opts[:preconnect]) && @pool.respond_to?(:preconnect, true) +200 concurrent = typecast_value_string(@opts[:preconnect]) == "concurrently" +201 @pool.send(:preconnect, concurrent) +202 end +203 +204 initialize_load_extensions(:extensions) +205 test_connection if typecast_value_boolean(@opts.fetch(:test, true)) && respond_to?(:connect, true) +206 rescue +207 Sequel.synchronize{::Sequel::DATABASES.delete(self)} if keep_reference +208 raise +209 end +210 end
Public Class methods
[show source]# File lib/sequel/database/misc.rb -55 def self.register_extension(ext, mod=nil, &block) -56 if mod -57 raise(Error, "cannot provide both mod and block to Database.register_extension") if block -58 if mod.is_a?(Module) -59 block = proc{|db| db.extend(mod)} -60 else -61 block = mod -62 end -63 end -64 Sequel.synchronize{EXTENSIONS[ext] = block} -65 end+60 def self.register_extension(ext, mod=nil, &block) +61 if mod +62 raise(Error, "cannot provide both mod and block to Database.register_extension") if block +63 if mod.is_a?(Module) +64 block = proc{|db| db.extend(mod)} +65 else +66 block = mod +67 end +68 end +69 Sequel.synchronize{EXTENSIONS[ext] = block} +70 end
Public Class methods
[show source]# File lib/sequel/database/misc.rb -68 def self.run_after_initialize(instance) -69 @initialize_hook.call(instance) -70 end+73 def self.run_after_initialize(instance) +74 @initialize_hook.call(instance) +75 end
Public Instance methods
@@ -2883,9 +2883,9 @@Public Instance methods
[show source]# File lib/sequel/database/misc.rb -234 def cast_type_literal(type) -235 type_literal(:type=>type) -236 end+239 def cast_type_literal(type) +240 type_literal(:type=>type) +241 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -243 def extension(*exts) -244 Sequel.extension(*exts) -245 exts.each do |ext| -246 if pr = Sequel.synchronize{EXTENSIONS[ext]} -247 if Sequel.synchronize{@loaded_extensions.include?(ext) ? false : (@loaded_extensions << ext)} -248 pr.call(self) -249 end -250 else -251 raise(Error, "Extension #{ext} does not have specific support handling individual databases (try: Sequel.extension #{ext.inspect})") -252 end -253 end -254 self -255 end+248 def extension(*exts) +249 Sequel.extension(*exts) +250 exts.each do |ext| +251 if pr = Sequel.synchronize{EXTENSIONS[ext]} +252 if Sequel.synchronize{@loaded_extensions.include?(ext) ? false : (@loaded_extensions << ext)} +253 pr.call(self) +254 end +255 else +256 raise(Error, "Extension #{ext} does not have specific support handling individual databases (try: Sequel.extension #{ext.inspect})") +257 end +258 end +259 self +260 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -208 def freeze -209 valid_connection_sql -210 metadata_dataset -211 @opts.freeze -212 @loggers.freeze -213 @pool.freeze -214 @dataset_class.freeze -215 @dataset_modules.freeze -216 @schema_type_classes.freeze -217 @loaded_extensions.freeze -218 metadata_dataset -219 super -220 end+213 def freeze +214 valid_connection_sql +215 metadata_dataset +216 @opts.freeze +217 @loggers.freeze +218 @pool.freeze +219 @dataset_class.freeze +220 @dataset_modules.freeze +221 @schema_type_classes.freeze +222 @loaded_extensions.freeze +223 metadata_dataset +224 super +225 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -260 def from_application_timestamp(v) -261 Sequel.convert_output_timestamp(v, timezone) -262 end+265 def from_application_timestamp(v) +266 Sequel.convert_output_timestamp(v, timezone) +267 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -266 def inspect -267 s = String.new -268 s << "#<#{self.class}" -269 s << " database_type=#{database_type}" if database_type && database_type != adapter_scheme -270 -271 keys = [:host, :database, :user] -272 opts = self.opts -273 if !keys.any?{|k| opts[k]} && opts[:uri] -274 opts = self.class.send(:options_from_uri, URI.parse(opts[:uri])) -275 end -276 -277 keys.each do |key| -278 val = opts[key] -279 if val && val != '' -280 s << " #{key}=#{val}" -281 end -282 end -283 -284 s << ">" -285 end+271 def inspect +272 s = String.new +273 s << "#<#{self.class}" +274 s << " database_type=#{database_type}" if database_type && database_type != adapter_scheme +275 +276 keys = [:host, :database, :user] +277 opts = self.opts +278 if !keys.any?{|k| opts[k]} && opts[:uri] +279 opts = self.class.send(:options_from_uri, URI.parse(opts[:uri])) +280 end +281 +282 keys.each do |key| +283 val = opts[key] +284 if val && val != '' +285 s << " #{key}=#{val}" +286 end +287 end +288 +289 s << ">" +290 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -292 def literal(v) -293 schema_utility_dataset.literal(v) -294 end+297 def literal(v) +298 schema_utility_dataset.literal(v) +299 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -298 def literal_symbol(sym) -299 Sequel.synchronize{@symbol_literal_cache[sym]} -300 end+303 def literal_symbol(sym) +304 Sequel.synchronize{@symbol_literal_cache[sym]} +305 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -303 def literal_symbol_set(sym, lit) -304 Sequel.synchronize{@symbol_literal_cache[sym] = lit} -305 end+308 def literal_symbol_set(sym, lit) +309 Sequel.synchronize{@symbol_literal_cache[sym] = lit} +310 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -308 def prepared_statement(name) -309 Sequel.synchronize{prepared_statements[name]} -310 end+313 def prepared_statement(name) +314 Sequel.synchronize{prepared_statements[name]} +315 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -315 def quote_identifier(v) -316 schema_utility_dataset.quote_identifier(v) -317 end+320 def quote_identifier(v) +321 schema_utility_dataset.quote_identifier(v) +322 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -320 def schema_type_class(type) -321 @schema_type_classes[type] -322 end+325 def schema_type_class(type) +326 @schema_type_classes[type] +327 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -325 def serial_primary_key_options -326 {:primary_key => true, :type => Integer, :auto_increment => true} -327 end+330 def serial_primary_key_options +331 {:primary_key => true, :type => Integer, :auto_increment => true} +332 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -330 def set_prepared_statement(name, ps) -331 Sequel.synchronize{prepared_statements[name] = ps} -332 end+335 def set_prepared_statement(name, ps) +336 Sequel.synchronize{prepared_statements[name] = ps} +337 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -336 def sharded? -337 @sharded -338 end+341 def sharded? +342 @sharded +343 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -341 def timezone -342 @timezone || Sequel.database_timezone -343 end+346 def timezone +347 @timezone || Sequel.database_timezone +348 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -348 def to_application_timestamp(v) -349 Sequel.convert_timestamp(v, timezone) -350 end+353 def to_application_timestamp(v) +354 Sequel.convert_timestamp(v, timezone) +355 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -357 def typecast_value(column_type, value) -358 return nil if value.nil? -359 meth = "typecast_value_#{column_type}" -360 begin -361 # Allow calling private methods as per-type typecasting methods are private -362 respond_to?(meth, true) ? send(meth, value) : value -363 rescue ArgumentError, TypeError => e -364 raise Sequel.convert_exception_class(e, InvalidValue) -365 end -366 end+362 def typecast_value(column_type, value) +363 return nil if value.nil? +364 meth = "typecast_value_#{column_type}" +365 begin +366 # Allow calling private methods as per-type typecasting methods are private +367 respond_to?(meth, true) ? send(meth, value) : value +368 rescue ArgumentError, TypeError => e +369 raise Sequel.convert_exception_class(e, InvalidValue) +370 end +371 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -370 def uri -371 opts[:uri] -372 end+375 def uri +376 opts[:uri] +377 end
Public Instance methods
[show source]# File lib/sequel/database/misc.rb -375 def url -376 uri -377 end+380 def url +381 uri +382 end
CHANGELOG
Last Update:
-2024-10-01 08:44:47 -0700
+2024-11-01 09:04:27 -0700
-5.85.0 (2025-10-01)¶ ↑
+5.86.0 (2024-11-01)¶ ↑
+-
+
Support the :disable_dqs Database option in the sqlite adapter to disable treating double quoted values as strings (jeremyevans) (#2233)
+ -
+
Have the subset_conditions plugin support where_all and where_any methods to combine existing subsets with AND or OR (jeremyevans)
+ -
+
Have the subset_conditions plugin add *_conditions methods for exclude method calls in addition to where and subset (jeremyevans)
+ -
+
Use Ruby module naming instead of Java package naming for access to Java libraries in the jdbc adapters (kalenp) (#2235, #2236)
+ -
+
Make schema_dumper extension format options similar to Hash#inspect on Ruby 3.4+ (jeremyevans)
+ -
+
Avoid deprecation warnings on Ruby 3.4.0-preview2 (jeremyevans)
+ -
+
Handle FROM tables that are SQL::DelayedEvaluation instances when trying to get primary key values after INSERT on PostgreSQL (tomasmiguez) (#2230, #2232)
+
+
+5.85.0 (2024-10-01)¶ ↑
-
Support json_table on PostgreSQL 17+ in the pg_json_ops extension (jeremyevans)
-
diff --git a/rdoc/files/doc/opening_databases_rdoc.html b/rdoc/files/doc/opening_databases_rdoc.html
index ed0233f2f..896a5d98a 100644
--- a/rdoc/files/doc/opening_databases_rdoc.html
+++ b/rdoc/files/doc/opening_databases_rdoc.html
@@ -31,7 +31,7 @@
opening_databases.rdoc
Last Update:
-2024-06-05 15:25:02 -0700
+2024-10-27 20:44:24 -0700
@@ -399,7 +399,9 @@ sqlite¶ :readonly
+:disable_dqs
+Disable treating double quoted values as strings in DDL and DML statements (requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+).
+ :readonly
open database in read-only mode
:timeout
the busy timeout to use in milliseconds (default: 5000).
diff --git a/rdoc/files/doc/release_notes/5_86_0_txt.html b/rdoc/files/doc/release_notes/5_86_0_txt.html
new file mode 100644
index 000000000..65a3dde0e
--- /dev/null
+++ b/rdoc/files/doc/release_notes/5_86_0_txt.html
@@ -0,0 +1,100 @@
+
+
+
+5.86.0.txt
+
+
+
+
+
+
+
+
+5.86.0.txt
+
+
+doc/release_notes/5.86.0.txt
+
+
+Last Update:
+2024-11-01 09:04:27 -0700
+
+
+
+
+
+New Features¶ ↑
+-
+
The subset_conditions plugin now supports where_all and where_any methods for combining existing subsets. It also adds *_conditions methods for exclude method calls, in addition to subset and where method calls:
+
+class Album < Sequel::Model
+ plugin :subset_conditions
+
+ dataset_module do
+ where :released, Sequel::CURRENT_DATE <= :release_date
+ exclude :inactive, :active
+
+ where_all(:inactive_released, :released, :inactive)
+ where_any(:inactive_or_released, :released, :inactive)
+ end
+end
+
+Album.inactive_released.sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) AND NOT active)
+
+Album.inactive_or_released.sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) OR NOT active)
+
+Album.where(Album.inactive_conditions).sql
+# => SELECT * FROM albums WHERE NOT active
+
+Album.exclude(Album.inactive_or_released_conditions).sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE > release_date) AND active)
+
+
+In addition to making code simpler, the where_all method improves performance compared to defining a dataset method that uses a method chain to call both methods, and the where_any method improves performances even more significantly as it allows caching where the alternative approach would not allow for caching.
+ -
+
The sqlite adapter now supports the :disable_dqs Database option, to disable treating double quoted values as strings. As described by the SQLite documentation, treating double quoted values as strings instead of identifiers is a misfeature. This support requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+.
+
+
+Other Improvements¶ ↑
+-
+
On PostgreSQL, datasets using an SQL::DelayedEvaluation instance as the table now support returning the primary key for inserts and imports.
+ -
+
All jdbc adapters now use Ruby-style module naming instead of Java-style package naming (e.g. Java::OrgPostgresqlUtil::PGobject instead of org.postgresql.util.PGobject). This supports loading the Java packages in separate classloaders.
+ -
+
The schema_dumper extension now uses colons instead of hashrockets when using Ruby 3.4+ (following the Hash#inspect change in Ruby 3.4.0-preview2).
+
+
+Backwards Compatibility¶ ↑
+-
+
The schema_dumper change can break backwards compatibility for tests that expect the hashrocket format, but only on Ruby 3.4+.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rdoc/files/lib/sequel/database/misc_rb.html b/rdoc/files/lib/sequel/database/misc_rb.html
index 73e134b2d..bc58a7455 100644
--- a/rdoc/files/lib/sequel/database/misc_rb.html
+++ b/rdoc/files/lib/sequel/database/misc_rb.html
@@ -31,7 +31,7 @@ misc.rb
Last Update:
-2024-08-08 09:05:13 -0700
+2024-10-08 08:28:45 -0700
diff --git a/rdoc/files/lib/sequel/model/base_rb.html b/rdoc/files/lib/sequel/model/base_rb.html
index 28a9b9156..bdba95a11 100644
--- a/rdoc/files/lib/sequel/model/base_rb.html
+++ b/rdoc/files/lib/sequel/model/base_rb.html
@@ -31,7 +31,7 @@ base.rb
Last Update:
-2024-03-13 15:29:18 -0700
+2024-10-11 15:23:17 -0700
diff --git a/rdoc/files/lib/sequel/model/dataset_module_rb.html b/rdoc/files/lib/sequel/model/dataset_module_rb.html
index 5890054f6..dfdce4cc2 100644
--- a/rdoc/files/lib/sequel/model/dataset_module_rb.html
+++ b/rdoc/files/lib/sequel/model/dataset_module_rb.html
@@ -31,7 +31,7 @@ dataset_module.rb
Last Update:
-2023-05-17 15:31:47 -0700
+2024-10-11 15:23:15 -0700
diff --git a/rdoc/files/lib/sequel/version_rb.html b/rdoc/files/lib/sequel/version_rb.html
index 67e5c1ab8..45f06621c 100644
--- a/rdoc/files/lib/sequel/version_rb.html
+++ b/rdoc/files/lib/sequel/version_rb.html
@@ -31,7 +31,7 @@ version.rb
Last Update:
-2024-10-01 08:44:47 -0700
+2024-11-01 09:04:27 -0700
diff --git a/rdoc/fr_file_index.html b/rdoc/fr_file_index.html
index e2bc74a8f..26bbcf311 100644
--- a/rdoc/fr_file_index.html
+++ b/rdoc/fr_file_index.html
@@ -238,6 +238,7 @@
5.83.0.txt
5.84.0.txt
5.85.0.txt
+5.86.0.txt
5.9.0.txt
schema_modification.rdoc
security.rdoc
5.85.0 (2025-10-01)¶ ↑
+5.86.0 (2024-11-01)¶ ↑
+-
+
Support the :disable_dqs Database option in the sqlite adapter to disable treating double quoted values as strings (jeremyevans) (#2233)
+ -
+
Have the subset_conditions plugin support where_all and where_any methods to combine existing subsets with AND or OR (jeremyevans)
+ -
+
Have the subset_conditions plugin add *_conditions methods for exclude method calls in addition to where and subset (jeremyevans)
+ -
+
Use Ruby module naming instead of Java package naming for access to Java libraries in the jdbc adapters (kalenp) (#2235, #2236)
+ -
+
Make schema_dumper extension format options similar to Hash#inspect on Ruby 3.4+ (jeremyevans)
+ -
+
Avoid deprecation warnings on Ruby 3.4.0-preview2 (jeremyevans)
+ -
+
Handle FROM tables that are SQL::DelayedEvaluation instances when trying to get primary key values after INSERT on PostgreSQL (tomasmiguez) (#2230, #2232)
+
5.85.0 (2024-10-01)¶ ↑
-
Support json_table on PostgreSQL 17+ in the pg_json_ops extension (jeremyevans)
-
diff --git a/rdoc/files/doc/opening_databases_rdoc.html b/rdoc/files/doc/opening_databases_rdoc.html
index ed0233f2f..896a5d98a 100644
--- a/rdoc/files/doc/opening_databases_rdoc.html
+++ b/rdoc/files/doc/opening_databases_rdoc.html
@@ -31,7 +31,7 @@
opening_databases.rdoc
sqlite¶ :readonly
+:disable_dqs
+Disable treating double quoted values as strings in DDL and DML statements (requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+).
+ :readonly
open database in read-only mode
:timeout
the busy timeout to use in milliseconds (default: 5000).
diff --git a/rdoc/files/doc/release_notes/5_86_0_txt.html b/rdoc/files/doc/release_notes/5_86_0_txt.html
new file mode 100644
index 000000000..65a3dde0e
--- /dev/null
+++ b/rdoc/files/doc/release_notes/5_86_0_txt.html
@@ -0,0 +1,100 @@
+
+
+
+5.86.0.txt
+
+
+
+
+
+
+
+
+5.86.0.txt
+
+
+doc/release_notes/5.86.0.txt
+
+
+Last Update:
+2024-11-01 09:04:27 -0700
+
+
+
+
+
+New Features¶ ↑
+-
+
The subset_conditions plugin now supports where_all and where_any methods for combining existing subsets. It also adds *_conditions methods for exclude method calls, in addition to subset and where method calls:
+
+class Album < Sequel::Model
+ plugin :subset_conditions
+
+ dataset_module do
+ where :released, Sequel::CURRENT_DATE <= :release_date
+ exclude :inactive, :active
+
+ where_all(:inactive_released, :released, :inactive)
+ where_any(:inactive_or_released, :released, :inactive)
+ end
+end
+
+Album.inactive_released.sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) AND NOT active)
+
+Album.inactive_or_released.sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) OR NOT active)
+
+Album.where(Album.inactive_conditions).sql
+# => SELECT * FROM albums WHERE NOT active
+
+Album.exclude(Album.inactive_or_released_conditions).sql
+# SELECT * FROM albums WHERE ((CURRENT_DATE > release_date) AND active)
+
+
+In addition to making code simpler, the where_all method improves performance compared to defining a dataset method that uses a method chain to call both methods, and the where_any method improves performances even more significantly as it allows caching where the alternative approach would not allow for caching.
+ -
+
The sqlite adapter now supports the :disable_dqs Database option, to disable treating double quoted values as strings. As described by the SQLite documentation, treating double quoted values as strings instead of identifiers is a misfeature. This support requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+.
+
+
+Other Improvements¶ ↑
+-
+
On PostgreSQL, datasets using an SQL::DelayedEvaluation instance as the table now support returning the primary key for inserts and imports.
+ -
+
All jdbc adapters now use Ruby-style module naming instead of Java-style package naming (e.g. Java::OrgPostgresqlUtil::PGobject instead of org.postgresql.util.PGobject). This supports loading the Java packages in separate classloaders.
+ -
+
The schema_dumper extension now uses colons instead of hashrockets when using Ruby 3.4+ (following the Hash#inspect change in Ruby 3.4.0-preview2).
+
+
+Backwards Compatibility¶ ↑
+-
+
The schema_dumper change can break backwards compatibility for tests that expect the hashrocket format, but only on Ruby 3.4+.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rdoc/files/lib/sequel/database/misc_rb.html b/rdoc/files/lib/sequel/database/misc_rb.html
index 73e134b2d..bc58a7455 100644
--- a/rdoc/files/lib/sequel/database/misc_rb.html
+++ b/rdoc/files/lib/sequel/database/misc_rb.html
@@ -31,7 +31,7 @@ misc.rb
Last Update:
-2024-08-08 09:05:13 -0700
+2024-10-08 08:28:45 -0700
diff --git a/rdoc/files/lib/sequel/model/base_rb.html b/rdoc/files/lib/sequel/model/base_rb.html
index 28a9b9156..bdba95a11 100644
--- a/rdoc/files/lib/sequel/model/base_rb.html
+++ b/rdoc/files/lib/sequel/model/base_rb.html
@@ -31,7 +31,7 @@ base.rb
Last Update:
-2024-03-13 15:29:18 -0700
+2024-10-11 15:23:17 -0700
diff --git a/rdoc/files/lib/sequel/model/dataset_module_rb.html b/rdoc/files/lib/sequel/model/dataset_module_rb.html
index 5890054f6..dfdce4cc2 100644
--- a/rdoc/files/lib/sequel/model/dataset_module_rb.html
+++ b/rdoc/files/lib/sequel/model/dataset_module_rb.html
@@ -31,7 +31,7 @@ dataset_module.rb
Last Update:
-2023-05-17 15:31:47 -0700
+2024-10-11 15:23:15 -0700
diff --git a/rdoc/files/lib/sequel/version_rb.html b/rdoc/files/lib/sequel/version_rb.html
index 67e5c1ab8..45f06621c 100644
--- a/rdoc/files/lib/sequel/version_rb.html
+++ b/rdoc/files/lib/sequel/version_rb.html
@@ -31,7 +31,7 @@ version.rb
Last Update:
-2024-10-01 08:44:47 -0700
+2024-11-01 09:04:27 -0700
diff --git a/rdoc/fr_file_index.html b/rdoc/fr_file_index.html
index e2bc74a8f..26bbcf311 100644
--- a/rdoc/fr_file_index.html
+++ b/rdoc/fr_file_index.html
@@ -238,6 +238,7 @@
5.83.0.txt
5.84.0.txt
5.85.0.txt
+5.86.0.txt
5.9.0.txt
schema_modification.rdoc
security.rdoc
:disable_dqs |
+ Disable treating double quoted values as strings in DDL and DML statements (requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+). + |
:readonly |
open database in read-only mode |
:timeout |
the busy timeout to use in milliseconds (default: 5000). diff --git a/rdoc/files/doc/release_notes/5_86_0_txt.html b/rdoc/files/doc/release_notes/5_86_0_txt.html new file mode 100644 index 000000000..65a3dde0e --- /dev/null +++ b/rdoc/files/doc/release_notes/5_86_0_txt.html @@ -0,0 +1,100 @@ + + + +
+
+
+
+
diff --git a/rdoc/files/lib/sequel/database/misc_rb.html b/rdoc/files/lib/sequel/database/misc_rb.html
index 73e134b2d..bc58a7455 100644
--- a/rdoc/files/lib/sequel/database/misc_rb.html
+++ b/rdoc/files/lib/sequel/database/misc_rb.html
@@ -31,7 +31,7 @@
+
+5.86.0.txt ++
+doc/release_notes/5.86.0.txt
+
+
+Last Update:
+2024-11-01 09:04:27 -0700
+
+
+
+
+
+
+
+
+
+New Features¶ ↑+
Other Improvements¶ ↑+
Backwards Compatibility¶ ↑+
+
+
+misc.rb
base.rbdataset_module.rbversion.rb |