From: "Florian Aßmann" Date: 2007-06-05T09:01:05+09:00 Subject: Re: Sequel: Cannot save model or limit varchars Huh, did some hacking... to fix this problem I changed the sequel/ postgres.rb code a bit: @L167: # See: http://www.postgresql.org/docs/8.2/static/sql-insert.html RETURNING = " RETURNING (%s)".freeze # Initializes and returns @table_sequence def table_sequences # define default procedure for missing keys (tables) that fetches the pkey @table_sequences ||= Hash.new do |sequences, table| # this is not threadsafe but the results shouldn't differ @pool.hold { |conn| sequences[table] = conn.pkey_and_sequence (table).first } sequences[table] end end # Ahh, protect this Method... *paranoia* protected :table_sequences def execute_insert(sql, table) # add RETURNING statement to sql sql << RETURNING % table_sequences[table] @logger.info(sql) if @logger # this is not nice :( @pool.hold do |conn| result = conn.execute sql id = result[0][0].to_i and result.clear id end rescue => e @logger.error(e.message) if @logger raise e end @L1: I'd replace: if !Object.const_defined?('Sequel') require File.join(File.dirname(__FILE__), '../sequel') end with: require File.join(File.dirname(__FILE__), '../sequel') since Ruby itself checks whether a file is already required... Another question: Is PGconn the right place for the @table_sequences cache? I'd place it in the Sequel::Postgres module... Sincerely Florian Am 05.06.2007 um 00:09 schrieb Florian A�mann: > Hi out there, > > I experienced Problems when I tried to save a Sequel::Model > > ERROR database: ERROR: currval of sequence "schedules_id_seq" is > not yet defined in this session > > The model schema is: > > set_schema do > serial :id, :primary_key => true > varchar :state, :default => 'running' > > timestamp :starts_at > timestamp :stops_at > > integer :aberrate_with > integer :dispersal_shift > end > > During testing I always recreate the models table. > > Also I cant figure out how to limit varchars... > > Sincerely > Florian > >