Back to home page

Enduro/X

 
 

    


0001 /**
0002  * @brief Sample application for testing SQL codes provided for Posgres
0003  *   for certain cases
0004  *
0005  * @file codestest.c
0006  */
0007 /* -----------------------------------------------------------------------------
0008  * Enduro/X Middleware Platform for Distributed Transaction Processing
0009  * Copyright (C) 2009-2016, ATR Baltic, Ltd. All Rights Reserved.
0010  * Copyright (C) 2017-2023, Mavimax, Ltd. All Rights Reserved.
0011  * This software is released under one of the following licenses:
0012  * AGPL (with Java and Go exceptions) or Mavimax's license for commercial use.
0013  * See LICENSE file for full text.
0014  * -----------------------------------------------------------------------------
0015  * AGPL license:
0016  *
0017  * This program is free software; you can redistribute it and/or modify it under
0018  * the terms of the GNU Affero General Public License, version 3 as published
0019  * by the Free Software Foundation;
0020  *
0021  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
0022  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0023  * PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3
0024  * for more details.
0025  *
0026  * You should have received a copy of the GNU Affero General Public License along 
0027  * with this program; if not, write to the Free Software Foundation, Inc.,
0028  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0029  *
0030  * -----------------------------------------------------------------------------
0031  * A commercial use license is available from Mavimax, Ltd
0032  * contact@mavimax.com
0033  * -----------------------------------------------------------------------------
0034  */
0035 #include <stdlib.h>
0036 #include <string.h>
0037 #include <memory.h>
0038 #include <ctype.h>
0039 #include <errno.h>
0040 
0041 #include <userlog.h>
0042 
0043 #include <ndrstandard.h>
0044 #include <ndebug.h>
0045 
0046 #include <libpq-fe.h>
0047 
0048 /*#include <ecpglib.h>*/
0049 
0050 
0051 /*------------------------------Externs---------------------------------------*/
0052 /*------------------------------Macros----------------------------------------*/
0053 /*------------------------------Enums-----------------------------------------*/
0054 /*------------------------------Typedefs--------------------------------------*/
0055 typedef struct {
0056     
0057     char *field;
0058     int id;
0059     
0060 } details_t;
0061 /*------------------------------Globals---------------------------------------*/
0062 /*------------------------------Statics---------------------------------------*/
0063 
0064 
0065 exprivate details_t M_tests [] = {
0066     
0067     {"PG_DIAG_SEVERITY", PG_DIAG_SEVERITY},
0068     {"PG_DIAG_SQLSTATE", PG_DIAG_SQLSTATE},
0069     {"PG_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY},
0070     {"PG_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL},
0071     {"PG_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT},
0072     {"PG_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION},
0073     {"PG_DIAG_CONTEXT", PG_DIAG_CONTEXT},
0074     {"PG_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE},
0075     {"PG_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE},
0076     {"PG_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION},
0077     
0078     {NULL}
0079     
0080 };
0081 
0082 /*------------------------------Prototypes------------------------------------*/
0083 
0084 /**
0085  * Entry point for test application
0086  * @param argc
0087  * @param argv
0088  * @return 
0089  */
0090 int main(int argc, char **argv)
0091 {
0092     char stmt[1024];
0093     PGresult *res = NULL;
0094     PGconn * conn = NULL;
0095     int ret;
0096     details_t *det;
0097     
0098     char *tests_nok[] = {
0099         "BEGIN TRANSACTION;"
0100         ,"PREPARE TRANSACTION 'EHLO';"
0101         ,"ROLLBACK PREPARED 'EHLO';"
0102         ,"COMMIT PREPARED 'EHLO';"
0103         ,"drop table ndrx_test_account;"
0104         ,"drop table ndrx_test_account;"
0105         ,"CREATE TABLE ndrx_test_account(userid integer UNIQUE NOT NULL);"
0106         ,"select count(*) from ndrx_test_account"
0107         ,"BEGIN TRANSACTION;"
0108         ,"insert into ndrx_test_account(userid) values (1);"
0109         ,"PREPARE TRANSACTION 'TEST1';"
0110         ,"ROLLBACK PREPARED 'TEST1';"
0111         ,"COMMIT PREPARED 'TEST1';"
0112         ,"BEGIN TRANSACTION;"
0113         ,"insert into ndrx_test_account(userid) values (1);"
0114         ,"PREPARE TRANSACTION 'TEST1';"
0115         ,"COMMIT PREPARED 'TEST1';"
0116         ,"ROLLBACK PREPARED 'TEST1';"
0117         ,"select count(*) from ndrx_test_account;"
0118         ,NULL
0119     };
0120 
0121     int i=0;
0122     
0123     /*
0124     sqlca.sqlcode = 0;
0125 
0126     if (!ECPGconnect (__LINE__, 0, "unix:postgresql://localhost/template1", "postgres", 
0127             "", "local", EXFALSE))
0128     {
0129         NDRX_LOG(log_error, "ECPGconnect failed, code %ld state: [%s]: %s", 
0130                 (long)sqlca.sqlcode, sqlca.sqlstate, sqlca.sqlerrm.sqlerrmc);
0131         
0132         return EXFAIL;
0133     }
0134     
0135     conn = ECPGget_PGconn("local");
0136 
0137     if (NULL==conn)
0138     {
0139         NDRX_LOG(log_error, "Postgres error: failed to get PQ connection!");
0140         return EXFAIL;
0141     }
0142     */
0143 
0144     conn = PQconnectdb("postgresql://exdbtest:exdbtest1@localhost/xe");
0145     if (PQstatus(conn) != CONNECTION_OK)
0146     {
0147         NDRX_LOG(log_error, "ERROR: Connection to database failed: %s",
0148             PQerrorMessage(conn));
0149         PQfinish(conn);
0150         return EXFAIL;
0151     }
0152 
0153     
0154     while (tests_nok[i])
0155     {
0156         NDRX_LOG(log_info, "Exec: [%s]", tests_nok[i]);
0157 
0158         res = PQexec(conn, tests_nok[i]);
0159 
0160         ret=(int)PQresultStatus(res);
0161         det = M_tests;
0162 
0163         NDRX_LOG(log_error, "PQresultStatus: %d (conn err: %s)", ret, PQerrorMessage(conn));
0164         while (det->field)
0165         {
0166             NDRX_LOG(log_error, "%s: %s", det->field, PQresultErrorField(res, det->id));
0167             det++;
0168         }
0169         i++;
0170         
0171         PQclear(res);
0172     }
0173     /*
0174      WE GET:
0175 
0176 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:plugins_load:inbase.c:0180:No plugins defined by NDRX_PLUGINS env variable
0177 N:NDRX:5:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:cconfig_load:config.c:0429:CC tag set to: []
0178 N:NDRX:5:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:x_inicfg_new:inicfg.c:0114:_ndrx_inicfg_new: load_global_env: 1
0179 N:NDRX:5:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:ig_load_pass:config.c:0396:_ndrx_cconfig_load_pass: ret: 0 is_internal: 1 G_tried_to_load: 1
0180 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0141:Exec: [BEGIN TRANSACTION;]
0181 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0182 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0183 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0184 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0185 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0186 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0187 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334264:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0188 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0189 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0190 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0191 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0192 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0141:Exec: [PREPARE TRANSACTION 'EHLO';]
0193 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0194 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0195 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0196 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334265:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0197 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0198 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0199 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0200 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0201 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0202 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0203 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0204 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0141:Exec: [ROLLBACK PREPARED 'EHLO';]
0205 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0206 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0207 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0208 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334266:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0209 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0210 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0211 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0212 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0213 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0214 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0215 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0216 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0141:Exec: [COMMIT PREPARED 'EHLO';]
0217 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0148:PQresultStatus: 7 (conn err: ERROR:  prepared transaction with identifier "EHLO" does not exist
0218 )
0219 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SEVERITY: ERROR
0220 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SQLSTATE: 42704
0221 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: prepared transaction with identifier "EHLO" does not exist
0222 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0223 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0224 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0225 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0226 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: twophase.c
0227 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: 539
0228 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: LockGXact
0229 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334267:main        :estest.c:0141:Exec: [drop table ndrx_test_account;]
0230 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0231 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0232 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0233 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0234 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0235 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0236 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0237 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0238 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0239 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0240 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0241 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334269:main        :estest.c:0141:Exec: [CREATE TABLE ndrx_test_account(userid integer UNIQUE NOT NULL);]
0242 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0243 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0244 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0245 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0246 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0247 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0248 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0249 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0250 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0251 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0252 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0253 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334283:main        :estest.c:0141:Exec: [BEGIN TRANSACTION;]
0254 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0255 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0256 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0257 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0258 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0259 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0260 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0261 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0262 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0263 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0264 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0265 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0141:Exec: [insert into ndrx_test_account(userid) values (1);]
0266 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0267 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0268 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0269 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0270 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0271 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0272 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0273 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0274 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0275 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0276 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0277 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334284:main        :estest.c:0141:Exec: [PREPARE TRANSACTION 'TEST1';]
0278 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0279 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0280 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0281 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0282 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0283 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0284 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0285 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0286 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0287 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0288 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0289 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334285:main        :estest.c:0141:Exec: [ROLLBACK PREPARED 'TEST1';]
0290 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0291 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0292 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0293 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0294 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0295 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0296 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0297 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0298 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0299 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0300 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0301 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0141:Exec: [COMMIT PREPARED 'TEST1';]
0302 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0148:PQresultStatus: 7 (conn err: ERROR:  prepared transaction with identifier "TEST1" does not exist
0303 )
0304 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SEVERITY: ERROR
0305 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SQLSTATE: 42704
0306 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: prepared transaction with identifier "TEST1" does not exist
0307 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0308 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0309 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0310 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0311 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: twophase.c
0312 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: 539
0313 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: LockGXact
0314 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0141:Exec: [BEGIN TRANSACTION;]
0315 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0316 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0317 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0318 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0319 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0320 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0321 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0322 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0323 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0324 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0325 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0326 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334286:main        :estest.c:0141:Exec: [insert into ndrx_test_account(userid) values (1);]
0327 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0328 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0329 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0330 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0331 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0332 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0333 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0334 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0335 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0336 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0337 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0338 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0141:Exec: [PREPARE TRANSACTION 'TEST1';]
0339 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0340 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0341 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334287:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0342 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0343 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0344 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0345 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0346 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0347 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0348 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0349 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0350 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0141:Exec: [COMMIT PREPARED 'TEST1';]
0351 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0148:PQresultStatus: 1 (conn err: )
0352 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0353 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334288:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0354 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0355 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0356 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0357 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0358 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0359 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0360 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0361 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0362 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0141:Exec: [ROLLBACK PREPARED 'TEST1';]
0363 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0148:PQresultStatus: 7 (conn err: ERROR:  prepared transaction with identifier "TEST1" does not exist
0364 )
0365 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SEVERITY: ERROR
0366 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SQLSTATE: 42704
0367 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: prepared transaction with identifier "TEST1" does not exist
0368 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0369 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0370 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0371 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0372 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: twophase.c
0373 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: 539
0374 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: LockGXact
0375 N:NDRX:4:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0141:Exec: [select count(*) from ndrx_test_account;]
0376 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0148:PQresultStatus: 2 (conn err: )
0377 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SEVERITY: (null)
0378 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SQLSTATE: (null)
0379 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_PRIMARY: (null)
0380 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_DETAIL: (null)
0381 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_MESSAGE_HINT: (null)
0382 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_STATEMENT_POSITION: (null)
0383 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_CONTEXT: (null)
0384 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_FILE: (null)
0385 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_LINE: (null)
0386 N:NDRX:2:d5d3db3a: 3461:7f311b089800:000:20190623:124334289:main        :estest.c:0151:PG_DIAG_SOURCE_FUNCTION: (null)
0387 
0388      */
0389     
0390     
0391     /* try to do some work */
0392     
0393     
0394     return 0;
0395 }
0396 
0397 /* vim: set ts=4 sw=4 et smartindent: */