Hi all.
Looks like we run into an issue with postgres adapter
when connection_validator extension is used. The problem is simple. DB
connection is NOT lazy anymore when connection_validator is activated.
Sequel version is 3.43.0. Consider this snippet
#!/usr/bin/env ruby
require "sequel"
require 'logging'
logger = Logging.logger(STDOUT)
logger.level = :debug
logger.info 'Starting...'
DB = Sequel.connect(:adapter => 'postgres',
:username => 'whatever', :password => 'whatever'',
:database => 'whatever'', :host => 'localhost')
logger.info DB.inspect
DB.loggers << logger
DB.extension(:connection_validator)
DB.loggers << logger
puts `sudo netstat -ntp | egrep '5432.*ESTABLISHED.*#{Process.pid}'`
You can run it and see that DB connection gets established even no SQL is
fired by the app. It is certainly not a lazy connection.
I, [2013-02-01T13:45:49.668455 #19887] INFO : Starting...
I, [2013-02-01T13:45:49.729210 #19887] INFO :
#<Sequel::Postgres::Database: {:adapter=>"postgres",
:username=>"transporter", :password=>"2ownTransporter",
:database=>"transporter", :host=>"localhost"}>
I, [2013-02-01T13:45:49.757414 #19887] INFO : (0.000299s) SET
standard_conforming_strings = ON
I, [2013-02-01T13:45:49.757832 #19887] INFO : (0.000280s) SET
client_min_messages = 'WARNING'
I, [2013-02-01T13:45:49.758023 #19887] INFO : (0.000129s) SET DateStyle =
'ISO'
tcp6 0 0 ::1:48713 ::1:5432
ESTABLISHED 19887/ruby
I, [2013-02-01T13:45:49.831646 #19887] INFO : Finished...
After some digging in the code and seems like calling server_version in
select_clause_methods triggers DB connection.
https://github.com/jeremyevans/sequel/blob/master/lib/sequel/adapters/shared/postgres.rb#L1303
here is server_version code...
https://github.com/jeremyevans/sequel/blob/master/lib/sequel/adapters/shared/postgres.rb#L453
Just to compare... connecting to MS SQL does have lazy connection. I
totally understand rationale behind this code and the need to have PG
version handy in order to prepare statements but it is sort inconsistent
with other adapters. May be to document this PG connection_validator
"feature" because I don't think it easily fixable at the moment. What do
you think?
Thanks, -Alex
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.