Back in July I had asked and received helpful suggestions about doing
"Conditional INSERT to PostgreSQL" [1]. I'm now trying to take advantage
of the PostgreSQL 9.5 "ON CONFLICT" feature as a solution. Starting with
the simplest case, I previously had as a Model ClassMethod and peer to
create():
def create?( h )
> create( h )
> rescue Sequel::UniqueConstraintViolation => e
> nil
> end
>
This gave the desired behavior on the client side, but results in undesired
error logging and some associated overhead on the Postgres server side.
Using Sequel 4.29 and Postgres 9.5, I can replace the above with:
def create?( h )
> c = dataset.returning.insert_ignore.insert( h ).first
> c && call( c )
> end
>
This works great for the simple cases, but is failing with PG syntax errors
in cases where I had also been using the pg_array and pg_json extensions
for mapping columns of those types. Is there some better way to hook into
the model level column mapping (and extensions) while using this dataset
level insert_ignore feature?
[1]: https://groups.google.com/d/msg/sequel-talk/01rBJ7_U02M/6BoPzGc4sBcJ
--
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 https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.