The biggest difference in the environments is that I'm testing the CockroachDB (https://www.cockroachlabs.com/docs/stable/third-party-database-tools.html). I haven't mentioned it before because of the db support of the pg drivier. As far as prepared_statements plugin, I'm going to remove it as it's not used. Besides this I couldn't find other issues with the two, Sequel & CockroachDB.
Thank you, Silviu On Thursday, 15 July 2021 at 17:58:38 UTC+3 Jeremy Evans wrote: > On Thu, Jul 15, 2021 at 4:29 AM Silviu Panaite <[email protected]> > wrote: > >> >> The issue is that *plugin :timestamps* and *plugin :prepared_statements >> don't work together* >> class Test < Sequel::Model >> plugin :timestamps >> plugin :prepared_statements >> end >> t = Test.new >> t.save >> */usr/local/lib/ruby/gems/3.0.0/gems/sequel-5.46.0/lib/sequel/adapters/postgres.rb:506:in >> >> `exec_prepared': ERROR: error in argument for $1: could not parse string >> "'2021-07-15 14:27:11.263364+0300'" as timestamp (PG::SyntaxError)* >> >> also *db.freeze* will not work on the* :adapter=>"postgres" * >> >> Should I add this in git as an issue? >> > > This works fine in my environment: > > DB.create_table(:tests) do > primary_key :id > Time :created_at > Time :updated_at > end > > class Test < Sequel::Model > plugin :timestamps > plugin :prepared_statements > end > t = Test.new > t.save > > Log: > > $ ruby bin/sequel -E postgres:///?user=sequel_test t.rb > I, [2021-07-15T07:42:55.196032 #67844] INFO -- : (0.000613s) SET > standard_conforming_strings = ON > I, [2021-07-15T07:42:55.196466 #67844] INFO -- : (0.000127s) SET > client_min_messages = 'WARNING' > I, [2021-07-15T07:42:55.196695 #67844] INFO -- : (0.000150s) SET > DateStyle = 'ISO' > I, [2021-07-15T07:42:55.199196 #67844] INFO -- : (0.001387s) SELECT > CAST(current_setting('server_version_num') AS integer) AS v > I, [2021-07-15T07:42:55.212642 #67844] INFO -- : (0.012799s) CREATE TABLE > "tests" ("id" integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, > "created_at" timestamp, "updated_at" timestamp) > I, [2021-07-15T07:42:55.237449 #67844] INFO -- : (0.020762s) SELECT > "pg_attribute"."attname" AS "name", CAST("pg_attribute"."atttypid" AS > integer) AS "oid", CAST("basetype"."oid" AS integer) AS "base_oid", > format_type("basetype"."oid", "pg_type"."typtypmod") AS "db_base_type", > format_type("pg_type"."oid", "pg_attribute"."atttypmod") AS "db_type", > pg_get_expr("pg_attrdef"."adbin", "pg_class"."oid") AS "default", NOT > "pg_attribute"."attnotnull" AS "allow_null", > COALESCE(("pg_attribute"."attnum" = ANY("pg_index"."indkey")), false) AS > "primary_key", "pg_attribute"."attidentity", ("pg_attribute"."attgenerated" > != '') AS "generated" FROM "pg_class" INNER JOIN "pg_attribute" ON > ("pg_attribute"."attrelid" = "pg_class"."oid") INNER JOIN "pg_type" ON > ("pg_type"."oid" = "pg_attribute"."atttypid") LEFT OUTER JOIN "pg_type" AS > "basetype" ON ("basetype"."oid" = "pg_type"."typbasetype") LEFT OUTER JOIN > "pg_attrdef" ON (("pg_attrdef"."adrelid" = "pg_class"."oid") AND > ("pg_attrdef"."adnum" = "pg_attribute"."attnum")) LEFT OUTER JOIN > "pg_index" ON (("pg_index"."indrelid" = "pg_class"."oid") AND > ("pg_index"."indisprimary" IS TRUE)) WHERE (("pg_attribute"."attisdropped" > IS FALSE) AND ("pg_attribute"."attnum" > 0) AND ("pg_class"."oid" = > CAST(CAST('"tests"' AS regclass) AS oid))) ORDER BY "pg_attribute"."attnum" > I, [2021-07-15T07:42:55.251194 #67844] INFO -- : (0.000113s) BEGIN > I, [2021-07-15T07:42:55.254152 #67844] INFO -- : (0.001941s) PREPARE > smpsp_1 AS INSERT INTO "tests" ("created_at") VALUES ($1) RETURNING "id", > "created_at", "updated_at" > I, [2021-07-15T07:42:55.256876 #67844] INFO -- : (0.002613s) EXECUTE > smpsp_1 (INSERT INTO "tests" ("created_at") VALUES ($1) RETURNING "id", > "created_at", "updated_at"); ["'2021-07-15 07:42:55.250899-0700'"] > I, [2021-07-15T07:42:55.257792 #67844] INFO -- : (0.000379s) COMMIT > > Note that we have specs for usage of Time types in prepared statements > with bound variables (spec/integration/prepared_statement_test.rb), and > they pass in all CI environments (currently GitHub Actions, previously > Travis CI). Additionally, timestamps and prepared_statements are two of > the more popular plugins, so if this was broken in general, it probably > would have been reported earlier. This leads me to conclude that the most > likely reason for the failure is an issue specific to your environment, and > not a general problem in Sequel. I couldn't rule out this being a problem > with Sequel, but the burden of proof is on you to show this is bug in > Sequel and not an issue specific to your environment. > > Thanks, > Jeremy > -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/sequel-talk/e0b37e30-0d02-49f7-89e5-ff572acc0f62n%40googlegroups.com.
