diff options
Diffstat (limited to 'src/backend/access')
| -rw-r--r-- | src/backend/access/common/printtup.c | 13 | ||||
| -rw-r--r-- | src/backend/access/transam/xact.c | 39 |
2 files changed, 44 insertions, 8 deletions
diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c index c88dedd93fd..160b703223f 100644 --- a/src/backend/access/common/printtup.c +++ b/src/backend/access/common/printtup.c @@ -9,7 +9,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.66 2003/04/22 00:08:06 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.67 2003/04/26 20:22:58 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -98,6 +98,7 @@ printtup_setup(DestReceiver *self, int operation, { Form_pg_attribute *attrs = typeinfo->attrs; int natts = typeinfo->natts; + int proto = PG_PROTOCOL_MAJOR(FrontendProtocol); int i; StringInfoData buf; @@ -107,11 +108,19 @@ printtup_setup(DestReceiver *self, int operation, for (i = 0; i < natts; ++i) { pq_sendstring(&buf, NameStr(attrs[i]->attname)); + /* column ID info appears in protocol 3.0 and up */ + if (proto >= 3) + { + /* XXX not yet implemented, send zeroes */ + pq_sendint(&buf, 0, 4); + pq_sendint(&buf, 0, 2); + } pq_sendint(&buf, (int) attrs[i]->atttypid, sizeof(attrs[i]->atttypid)); pq_sendint(&buf, attrs[i]->attlen, sizeof(attrs[i]->attlen)); - if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2) + /* typmod appears in protocol 2.0 and up */ + if (proto >= 2) pq_sendint(&buf, attrs[i]->atttypmod, sizeof(attrs[i]->atttypmod)); } diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 598e3c880e5..a15985d3bd7 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.145 2003/03/27 16:51:27 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.146 2003/04/26 20:22:59 tgl Exp $ * * NOTES * Transaction aborts can now occur two ways: @@ -1705,17 +1705,44 @@ AbortOutOfAnyTransaction(void) s->blockState = TBLOCK_DEFAULT; } +/* + * IsTransactionBlock --- are we within a transaction block? + */ bool IsTransactionBlock(void) { TransactionState s = CurrentTransactionState; - if (s->blockState == TBLOCK_INPROGRESS - || s->blockState == TBLOCK_ABORT - || s->blockState == TBLOCK_ENDABORT) - return true; + if (s->blockState == TBLOCK_DEFAULT) + return false; - return false; + return true; +} + +/* + * TransactionBlockStatusCode - return status code to send in ReadyForQuery + */ +char +TransactionBlockStatusCode(void) +{ + TransactionState s = CurrentTransactionState; + + switch (s->blockState) + { + case TBLOCK_DEFAULT: + return 'I'; /* idle --- not in transaction */ + case TBLOCK_BEGIN: + case TBLOCK_INPROGRESS: + case TBLOCK_END: + return 'T'; /* in transaction */ + case TBLOCK_ABORT: + case TBLOCK_ENDABORT: + return 'E'; /* in failed transaction */ + } + + /* should never get here */ + elog(ERROR, "bogus transaction block state"); + return 0; /* keep compiler quiet */ } |
