aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1996-07-23 03:38:44 +0000
committerMarc G. Fournier <scrappy@hub.org>1996-07-23 03:38:44 +0000
commit83c9ec765e12362e7a459214404765f5084f4291 (patch)
treec9cb9d43212d2aae4c51222f3d4994d5b93e42d1
parent2206b5819d280107658d7f4cb6cea30f18d3564a (diff)
downloadpostgresql-83c9ec765e12362e7a459214404765f5084f4291.tar.gz
postgresql-83c9ec765e12362e7a459214404765f5084f4291.zip
Last changes to src from Dr. George *wipes brow*
-rw-r--r--src/interfaces/libpgtcl/Makefile5
-rw-r--r--src/interfaces/libpgtcl/pgtclCmds.c27
2 files changed, 29 insertions, 3 deletions
diff --git a/src/interfaces/libpgtcl/Makefile b/src/interfaces/libpgtcl/Makefile
index 73e218b3842..25a2a0ac6ea 100644
--- a/src/interfaces/libpgtcl/Makefile
+++ b/src/interfaces/libpgtcl/Makefile
@@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile,v 1.1.1.1 1996/07/09 06:22:16 scrappy Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile,v 1.2 1996/07/23 03:38:42 scrappy Exp $
#
#-------------------------------------------------------------------------
@@ -20,7 +20,8 @@ CFLAGS+= -I$(HEADERDIR) \
-I$(srcdir)/backend/include \
-I$(srcdir)/backend \
-I$(CURDIR) \
- -I$(TCL_INCDIR)
+ -I$(TCL_INCDIR) \
+ -I$(srcdir)/libpq
ifdef KRBVERS
CFLAGS+= $(KRBFLAGS)
diff --git a/src/interfaces/libpgtcl/pgtclCmds.c b/src/interfaces/libpgtcl/pgtclCmds.c
index e6c2c539118..dca92137cfe 100644
--- a/src/interfaces/libpgtcl/pgtclCmds.c
+++ b/src/interfaces/libpgtcl/pgtclCmds.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.1.1.1 1996/07/09 06:22:16 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.2 1996/07/23 03:38:44 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -194,6 +194,8 @@ Pg_exec(AlientData cData, Tcl_Interp *interp, int argc, char* argv[])
the connection that produced the result
-assign arrayName
assign the results to an array
+ -assignbyidx arrayName
+ assign the results to an array using the first field as a key
-numTuples
the number of tuples in the query
-attributes
@@ -211,6 +213,7 @@ Pg_result(ClientData cData, Tcl_Interp *interp, int argc, char* argv[])
char *opt;
int i;
int tupno;
+ char prearrayInd[MAX_MESSAGE_LEN];
char arrayInd[MAX_MESSAGE_LEN];
char *arrVar;
@@ -268,6 +271,27 @@ Pg_result(ClientData cData, Tcl_Interp *interp, int argc, char* argv[])
Tcl_AppendResult(interp, arrVar, 0);
return TCL_OK;
}
+ else if (strcmp(opt, "-assignbyidx") == 0) {
+ if (argc != 4) {
+ Tcl_AppendResult(interp, "-assignbyidx option must be followed by a variable name",0);
+ return TCL_ERROR;
+ }
+ arrVar = argv[3];
+ /* this assignment assigns the table of result tuples into a giant
+ array with the name given in the argument,
+ the indices of the array or (tupno,attrName)*/
+ for (tupno = 0; tupno<PQntuples(result); tupno++) {
+ sprintf(prearrayInd,"%s",PQgetvalue(result,tupno,0));
+ for (i=1;i<PQnfields(result);i++) {
+ sprintf(arrayInd, "%s,%s", prearrayInd, PQfname(result,i));
+ Tcl_SetVar2(interp, arrVar, arrayInd,
+ PQgetvalue(result,tupno,i),
+ TCL_LEAVE_ERR_MSG);
+ }
+ }
+ Tcl_AppendResult(interp, arrVar, 0);
+ return TCL_OK;
+ }
else if (strcmp(opt, "-getTuple") == 0) {
if (argc != 4) {
Tcl_AppendResult(interp, "-getTuple option must be followed by a tuple number",0);
@@ -307,6 +331,7 @@ Pg_result(ClientData cData, Tcl_Interp *interp, int argc, char* argv[])
"\t-status\n",
"\t-conn\n",
"\t-assign arrayVarName\n",
+ "\t-assignbyidx arrayVarName\n",
"\t-numTuples\n",
"\t-attributes\n"
"\t-getTuple tupleNumber\n",