Skip to content

Commit 7cd1c60

Browse files
committed
Postgres, fix argument error for method enable_extension and disable_extension
Many test were failing because of this issue
1 parent 2fdfe2c commit 7cd1c60

File tree

2 files changed

+14
-29
lines changed

2 files changed

+14
-29
lines changed

lib/arjdbc/postgresql/adapter.rb

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -301,14 +301,21 @@ def release_advisory_lock(lock_id) # :nodoc:
301301
query_value("SELECT pg_advisory_unlock(#{lock_id})")
302302
end
303303

304-
def enable_extension(name)
305-
exec_query("CREATE EXTENSION IF NOT EXISTS \"#{name}\"").tap {
306-
reload_type_map
307-
}
304+
def enable_extension(name, **)
305+
schema, name = name.to_s.split(".").values_at(-2, -1)
306+
sql = +"CREATE EXTENSION IF NOT EXISTS \"#{name}\""
307+
sql << " SCHEMA #{schema}" if schema
308+
309+
internal_exec_query(sql).tap { reload_type_map }
308310
end
309311

310-
def disable_extension(name)
311-
exec_query("DROP EXTENSION IF EXISTS \"#{name}\" CASCADE").tap {
312+
# Removes an extension from the database.
313+
#
314+
# [<tt>:force</tt>]
315+
# Set to +:cascade+ to drop dependent objects as well.
316+
# Defaults to false.
317+
def disable_extension(name, force: false)
318+
internal_exec_query("DROP EXTENSION IF EXISTS \"#{name}\"#{' CASCADE' if force == :cascade}").tap {
312319
reload_type_map
313320
}
314321
end
@@ -322,7 +329,7 @@ def extension_enabled?(name)
322329
end
323330

324331
def extensions
325-
exec_query("SELECT extname FROM pg_extension", "SCHEMA").cast_values
332+
internal_exec_query("SELECT extname FROM pg_extension", "SCHEMA", allow_retry: true, materialize_transactions: false).cast_values
326333
end
327334

328335
# Returns a list of defined enum types, and their values.

lib/arjdbc/postgresql/oid_types.rb

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -67,28 +67,6 @@ def assert_valid_registration(oid, oid_type)
6767

6868
# @private
6969
module OIDTypes
70-
71-
# @override
72-
def enable_extension(name)
73-
result = super(name)
74-
@extensions = nil
75-
reload_type_map
76-
result
77-
end
78-
79-
# @override
80-
def disable_extension(name)
81-
result = super(name)
82-
@extensions = nil
83-
reload_type_map
84-
result
85-
end
86-
87-
# @override
88-
def extensions
89-
@extensions ||= super
90-
end
91-
9270
def get_oid_type(oid, fmod, column_name, sql_type = '') # :nodoc:
9371
# Note: type_map is storing a bunch of oid type prefixed with a namespace even
9472
# if they are not namespaced (e.g. ""."oidvector"). builtin types which are

0 commit comments

Comments
 (0)