mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 09:42:02 +08:00
DEV: upgrade mini_sql (#12465)
* DEV: upgrade mini_sql Even though we are not planning on using this quite yet, mini_sql now supports prepared statements. Would like this upgrade merged so we can do some benchmarking. Note, this will not work with pg_bouncer, but sites that are not using it may benefit from the feature. * implement multisite friendly prepared statements
This commit is contained in:
parent
f3eab6a86a
commit
5a1318e3c3
|
@ -214,7 +214,7 @@ GEM
|
|||
libv8 (~> 8.4.255)
|
||||
mini_scheduler (0.13.0)
|
||||
sidekiq (>= 4.2.3)
|
||||
mini_sql (1.0.1)
|
||||
mini_sql (1.1.3)
|
||||
mini_suffix (0.3.2)
|
||||
ffi (~> 1.9)
|
||||
minitest (5.14.4)
|
||||
|
|
|
@ -82,6 +82,20 @@ class MiniSqlMultisiteConnection < MiniSql::Postgres::Connection
|
|||
ActiveRecord::Base.connection.raw_connection
|
||||
end
|
||||
|
||||
# make for a multisite friendly prepared statement cache
|
||||
def prepared(condition = true)
|
||||
if condition
|
||||
conn = raw_connection.instance_variable_get(:@mini_sql_prepared_connection)
|
||||
if !conn
|
||||
conn = MiniSql::Postgres::PreparedConnection.new(self)
|
||||
raw_connection.instance_variable_set(:@mini_sql_prepared_connection, conn)
|
||||
end
|
||||
conn
|
||||
else
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
def build(sql)
|
||||
CustomBuilder.new(self, sql)
|
||||
end
|
||||
|
|
|
@ -73,6 +73,11 @@ describe MiniSqlMultisiteConnection do
|
|||
expect(outputString).to eq("123")
|
||||
end
|
||||
|
||||
it "supports prepared statements" do
|
||||
DB.prepared.query("SELECT ?", 1)
|
||||
DB.prepared.query("SELECT ?", 2)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user