From 9286d6cb7518b0131f6ddbda5d4e147773d80b6e Mon Sep 17 00:00:00 2001 From: Jesse Chavez Date: Wed, 13 Nov 2024 08:06:43 +1100 Subject: [PATCH 1/4] Postgres, do not skip test serial with trigger, fixed in rails 7.1.4 to see fix look at https://github.com/rails/rails/pull/50783 --- test/db/postgresql/table_name_test.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/db/postgresql/table_name_test.rb b/test/db/postgresql/table_name_test.rb index d96fca39b..bb84cb7c1 100644 --- a/test/db/postgresql/table_name_test.rb +++ b/test/db/postgresql/table_name_test.rb @@ -87,9 +87,6 @@ class SerialWithTrigger < ActiveRecord::Base end def test_serial_with_trigger - pend "Issue happens in active record 7.1 internals, issue wass logged in rails repo" - # issue link: https://github.com/rails/rails/issues/52485 - sn = SerialWithTrigger.create!(value: 1_234_567_890.to_s) assert sn.reload From 2de6c30cfa1467d4a6c198ecb2a12e20b6d80b4f Mon Sep 17 00:00:00 2001 From: Jesse Chavez Date: Thu, 14 Nov 2024 08:27:56 +1100 Subject: [PATCH 2/4] Remove execute since it's defined in AR abstract class, only raw_execute is needed --- lib/arjdbc/abstract/database_statements.rb | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/lib/arjdbc/abstract/database_statements.rb b/lib/arjdbc/abstract/database_statements.rb index bdff3e4a4..1cc69d61f 100644 --- a/lib/arjdbc/abstract/database_statements.rb +++ b/lib/arjdbc/abstract/database_statements.rb @@ -78,18 +78,6 @@ def exec_update(sql, name = 'SQL', binds = NO_BINDS) end alias :exec_delete :exec_update - def execute(sql, name = nil, async: false, allow_retry: false, materialize_transactions: true) - sql = transform_query(sql) - - if preventing_writes? && write_query?(sql) - raise ActiveRecord::ReadOnlyError, "Write query attempted while in readonly mode: #{sql}" - end - - mark_transaction_written_if_write(sql) - - raw_execute(sql, name, async: async, allow_retry: allow_retry, materialize_transactions: materialize_transactions) - end - # overridden to support legacy binds def select_all(arel, name = nil, binds = NO_BINDS, preparable: nil, async: false) binds = convert_legacy_binds_to_attributes(binds) if binds.first.is_a?(Array) @@ -107,7 +95,9 @@ def convert_legacy_binds_to_attributes(binds) def raw_execute(sql, name, async: false, allow_retry: false, materialize_transactions: true) log(sql, name, async: async) do with_raw_connection(allow_retry: allow_retry, materialize_transactions: materialize_transactions) do |conn| - conn.execute(sql) + result = conn.execute(sql) + verified! + result end end end From 2845b42e97a49a1a1ccad9caeda0c740e5777e04 Mon Sep 17 00:00:00 2001 From: Jesse Chavez Date: Thu, 14 Nov 2024 08:29:40 +1100 Subject: [PATCH 3/4] Postgres, define dbconsole method to fix a handful of tests --- lib/arjdbc/postgresql/adapter.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/arjdbc/postgresql/adapter.rb b/lib/arjdbc/postgresql/adapter.rb index 74a0c07e7..712c34235 100644 --- a/lib/arjdbc/postgresql/adapter.rb +++ b/lib/arjdbc/postgresql/adapter.rb @@ -787,6 +787,25 @@ def jdbc_connection_class def new_client(conn_params, adapter_instance) jdbc_connection_class.new(conn_params, adapter_instance) end + + def dbconsole(config, options = {}) + pg_config = config.configuration_hash + + ENV["PGUSER"] = pg_config[:username] if pg_config[:username] + ENV["PGHOST"] = pg_config[:host] if pg_config[:host] + ENV["PGPORT"] = pg_config[:port].to_s if pg_config[:port] + ENV["PGPASSWORD"] = pg_config[:password].to_s if pg_config[:password] && options[:include_password] + ENV["PGSSLMODE"] = pg_config[:sslmode].to_s if pg_config[:sslmode] + ENV["PGSSLCERT"] = pg_config[:sslcert].to_s if pg_config[:sslcert] + ENV["PGSSLKEY"] = pg_config[:sslkey].to_s if pg_config[:sslkey] + ENV["PGSSLROOTCERT"] = pg_config[:sslrootcert].to_s if pg_config[:sslrootcert] + if pg_config[:variables] + ENV["PGOPTIONS"] = pg_config[:variables].filter_map do |name, value| + "-c #{name}=#{value.to_s.gsub(/[ \\]/, '\\\\\0')}" unless value == ":default" || value == :default + end.join(" ") + end + find_cmd_and_exec("psql", config.database) + end end def initialize(...) From 28f4b0c91c114c08752339d0d43c7847cd55520f Mon Sep 17 00:00:00 2001 From: Jesse Chavez Date: Thu, 14 Nov 2024 08:32:36 +1100 Subject: [PATCH 4/4] Fix jdbc-mysql, name need to follow jar file naming --- jdbc-mysql/lib/jdbc/mysql.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdbc-mysql/lib/jdbc/mysql.rb b/jdbc-mysql/lib/jdbc/mysql.rb index b146f4e07..1ac62d419 100644 --- a/jdbc-mysql/lib/jdbc/mysql.rb +++ b/jdbc-mysql/lib/jdbc/mysql.rb @@ -5,7 +5,7 @@ module Jdbc module MySQL def self.driver_jar - "mysql-connector-java-#{DRIVER_VERSION}.jar" + "mysql-connector-j-#{DRIVER_VERSION}.jar" end def self.load_driver(method = :load)