This repository has been archived by the owner on Jan 4, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
exception? #44
Labels
Comments
That can brake lua vm internal state. Lua catches only lua errors, and postgres - pg errors. Inside there is conversion lua<->pg errors |
So if my insert query I called with server.execute fails because there is a unique constraint violation, I can not catch the error inside of my pllua function? |
@smarwei , as I mentioned, there is conversion lua->pg and pg->lua errors |
Is there a special way to catch these errors? I tried pcall(server.execute(throws unique violation)) but the error got propagated anyway. |
part of example from subtransaction.sql: CREATE TABLE accounts
(
id bigserial NOT NULL,
account_name text,
balance integer,
CONSTRAINT accounts_pkey PRIMARY KEY (id),
CONSTRAINT no_minus CHECK (balance >= 0)
);
insert into accounts(account_name, balance) values('joe', 200);
insert into accounts(account_name, balance) values('mary', 50);
CREATE OR REPLACE FUNCTION pg_temp.sub_test2()
RETURNS bool AS $$
local f = function(data)
local p = server.prepare(" insert into accounts(id , account_name, balance) values($1, $2, $3)", {"int4", "text","int4"})
p:execute (data)
return true
end
local status, err = subtransaction(f, {1,'joe 2', 100})
if not status then
print(err)
end
local status, err = subtransaction(f, {10,'joe 2', 100})
return status
$$ LANGUAGE pllua;
select pg_temp.sub_test2(); info message here: INFO: duplicate key value violates unique constraint "accounts_pkey" |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Is it possible to raise an sql exception from lua without calling function?
error() does not seem to be the proper solution here..
The text was updated successfully, but these errors were encountered: