Re: *** QUESTION *** After successful 'BEGIN;' command -- why PGSQL_TRANSACTION_ACTIVE and not PGSQL_TRANSACTION_INTRANS?

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: "Steve Petrie, P(dot)Eng(dot)" <apetrie(at)aspetrie(dot)net>, pgsql-general(at)postgresql(dot)org
Subject: Re: *** QUESTION *** After successful 'BEGIN;' command -- why PGSQL_TRANSACTION_ACTIVE and not PGSQL_TRANSACTION_INTRANS?
Date: 2015-10-10 19:35:28
Message-ID: 56196880.6050600@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 10/10/2015 11:43 AM, Steve Petrie, P.Eng. wrote:
> (Thanks to Adrian Klaver & Rob Stone, for their responses to my earlier
> posting, subject "[GENERAL] BEGIN, END & ROLLBACK commands -- do they
> produce a SQLSTATE value?". I worked around the unavailability of
> sqlstate '00000' after a successful SQL command, by creating proxy PHP
> variables $sql_state_proxy and $sql_state_class_proxy.)
> *Now I have a question about the value expected to be returned by
> function pg_transaction_status(...) after a successful execution of a
> postgres 'BEGIN;' command.*
> After my PHP program executes an (apparently) successful 'BEGIN;'
> command, it is expecting function pg_transaction_status(...) to return a
> value == PGSQL_TRANSACTION_INTRANS (==2 -- idle, in a transaction block).
> However, function pg_transaction_status(...) is instead returning
> a value == PGSQL_TRANSACTION_ACTIVE ( ==1 -- command in progress on the
> connection, a query has been sent via the connection and not yet completed).
> *Question: What value should function pg_transaction_status(...)return
> after a successful 'BEGIN;' command?*
> * * *
> * * *
> Here is a list of diagnostic info displayed by the PHP program when it
> detects that
> (pg_transaction_status(...) != PGSQL_TRANSACTION_INTRANS)
>
> $sql_conn<Resource id #15>
> $sql_conn_type<resource>
> *$sql_connection_status<0>* //
> PGSQL_CONNECTION_OK pg_connection_status($sql_conn);
> $sql_connection_status_type<integer><integer>
> $sql_min_version<9.3>
> $sql_srv_version<9.3.5>
> *$sql_query<BEGIN;>*
> $sql_result<Resource id #16>
> $sql_result_type<resource>
> *$sql_state<>* // pg_result_error_field($sql_result,
> PGSQL_DIAG_SQLSTATE);
> $sql_state_type<NULL>
> $sql_state_class<>
> $sql_state_proxy<00000>
> $sql_state_class_proxy<00>
> *$sql_transaction_status<1>* //
> PGSQL_TRANSACTION_ACTIVE pg_transaction_status($sql_conn);
> $sql_transaction_status_type<integer>
> *$sql_result_status_long<1>* // PGSQL_COMMAND_OK pg_result_status
> ($sql_result, PGSQL_STATUS_LONG);
> $sql_result_status_long_type<integer>
> *$sql_result_status_string<BEGIN>* // pg_result_status ($sql_result,
> PGSQL_STATUS_STRING);
> $sql_result_status_string_type<string>
> *$sql_result_error<>* // pg_result_error ($sql_result);
> $sql_result_error_type<string>
> *$sql_last_error<>* // pg_last_error($sql_conn);
> $sql_last_error_type<string>**
>
> Here are the corresponding relevant postgres log lines (in file
> <postgresql.conf>: log_line_prefix = 'ETO::%e::'):
>
> ETO::00000::LOG: 00000: database system was shut down at 2015-10-06
> 06:10:39 EDT
> ETO::00000::LOCATION: StartupXLOG,
> src\backend\access\transam\xlog.c:4888
> ETO::00000::LOG: 00000: connection received: host=127.0.0.1 port=1035
> ETO::00000::LOCATION: BackendInitialize,
> src\backend\postmaster\postmaster.c:3850
> ETO::57P03::FATAL: 57P03: the database system is starting up
> ETO::57P03::LOCATION: ProcessStartupPacket,
> src\backend\postmaster\postmaster.c:1986
> ETO::00000::LOG: 00000: database system is ready to accept connections
> ETO::00000::LOCATION: reaper, src\backend\postmaster\postmaster.c:2602
> ETO::00000::LOG: 00000: autovacuum launcher started
> ETO::00000::LOCATION: AutoVacLauncherMain,
> src\backend\postmaster\autovacuum.c:424
> ...
> ETO::00000::LOG: 00000: connection received: host=127.0.0.1 port=1083
> ETO::00000::LOCATION: BackendInitialize,
> src\backend\postmaster\postmaster.c:3850
> ETO::00000::LOG: 00000: connection authorized: user=its-eto_pg36
> database=eto_sql_db
> ETO::00000::LOCATION: PerformAuthentication,
> src\backend\utils\init\postinit.c:239
> ETO::00000::LOG: 00000: statement: set client_encoding to 'LATIN1'
> ETO::00000::LOCATION: exec_simple_query, src\backend\tcop\postgres.c:890
> ETO::00000::LOG: 00000: duration: 63.000 ms
> ETO::00000::LOCATION: exec_simple_query,
> src\backend\tcop\postgres.c:1118
> *ETO::00000::LOG: 00000: statement: BEGIN;
> ETO::00000::LOCATION: exec_simple_query,
> src\backend\tcop\postgres.c:890
> ETO::00000::LOG: 00000: duration: 0.000 ms
> ETO::00000::LOCATION: exec_simple_query,
> src\backend\tcop\postgres.c:1118
> *ETO::00000::LOG: 00000: disconnection: session time: 0:00:00.297
> user=its-eto_pg36 database=eto_sql_db host=127.0.0.1 port=1083
> ETO::00000::LOCATION: log_disconnections,
> src\backend\tcop\postgres.c:4444
>
> * * *
> * * *
> Thanks For Any Feedback,

So what is the actual PHP code that is being run?

> *Steve*

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2015-10-10 19:44:49 Re: Trouble setting up replication
Previous Message John R Pierce 2015-10-10 19:34:39 Re: Trouble setting up replication