From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
---|---|
To: | Thiemo Kellner <thiemo(at)gelassene-pferde(dot)biz>, PostgreSQL General <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: dblink: could not send query: another command is already in progress |
Date: | 2018-04-03 09:28:11 |
Message-ID: | 1522747691.2414.5.camel@cybertec.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Thiemo Kellner wrote:
> On 03/30/18 11:14, Laurenz Albe wrote:
> > You have to consume the result before you can send the next query.
>
> I changed implementation but still get the same error but now different
> context. I tried to retrieve the result but I failed
>
> I committed the last code to its project repository at SourceForge
> https://sourceforge.net/p/pglogger/code/HEAD/tree/
>
> and put the code to pastebin.com
> Test calls: https://pastebin.com/xfUp9NAL
> function WRITE_MESSAGE: https://pastebin.com/LDjE0Czx
> function WRITE_MESSAGE_TO_TABLE: https://pastebin.com/vkBkehZF
>
> [...]
> psql:testing/test.pg_sql:42: ERROR: function
> WRITE_MESSAGE_TO_TABLE(i_function => text, i_message => text, i_level =>
> text, i_present_user => name, i_session_user => name,
> i_transaction_timestamp => timestamp with time zone, i_transaction_id =>
> bigint, i_server_pid => bigint, i_remote_address => inet, i_remote_port
> => integer) does not exist
> HINT: No function matches the given name and argument types. You might
> need to add explicit type casts.
> CONTEXT: Error occurred on dblink connection named
> "PGLOGGER_CONNECTION": could not execute query.
> SQL statement "SELECT * from
> dblink_get_result(V_DBLINK_CONNECTION_NAME) as t(ID bigint)"
> PL/pgSQL function write_message(text,text) line 126 at PERFORM
> psql:testing/test.pg_sql:42: STATEMENT: select WRITE_MESSAGE('Test
> WRITE_MESSAGE 2nd call', 'NOTICE');
I couldn't dig through all your code, but two things seemed suspicious:
> if (
> V_DBLINK_CONNECTION_NAMES is null
> or V_DBLINK_CONNECTION_NAME != any(V_DBLINK_CONNECTION_NAMES)
I don't think you want "!=ANY" there. Shouldn't that be "<>ALL" ?
"<>ANY" will *always* be true if there are at least two different entries.
The other thing is that you seem to call "dblink_get_result" on any existing
connection before use. But you can only call the function if there is a
result outstanding.
One of your error messages above seems to suggest that this is your problem.
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com
From | Date | Subject | |
---|---|---|---|
Next Message | Raghavendra Rao J S V | 2018-04-03 09:34:24 | How to install pgTAP on cenos machine |
Previous Message | Ranjith Ramachandra | 2018-04-03 09:14:27 | Seems like there is an issue with reltuples showing twice the number of rows |