Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
5d2cf6af
Commit
5d2cf6af
authored
Jan 17, 1999
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TCL_ARRAYS option patches from Massimo Dal Zotto
parent
f134a1a9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
79 additions
and
36 deletions
+79
-36
src/backend/utils/adt/arrayfuncs.c
src/backend/utils/adt/arrayfuncs.c
+7
-1
src/interfaces/libpgtcl/pgtclCmds.c
src/interfaces/libpgtcl/pgtclCmds.c
+72
-35
No files found.
src/backend/utils/adt/arrayfuncs.c
View file @
5d2cf6af
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.3
5 1999/01/17 06:18:45 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.3
6 1999/01/17 21:12:55 tgl
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -699,8 +699,10 @@ array_out(ArrayType *v, Oid element_type)
for
(
tmp
=
values
[
i
];
*
tmp
;
tmp
++
)
{
overall_length
+=
1
;
#ifndef TCL_ARRAYS
if
(
*
tmp
==
'"'
)
overall_length
+=
1
;
#endif
}
overall_length
+=
1
;
}
...
...
@@ -729,6 +731,7 @@ array_out(ArrayType *v, Oid element_type)
if
(
!
typbyval
)
{
strcat
(
p
,
"
\"
"
);
#ifndef TCL_ARRAYS
l
=
strlen
(
p
);
for
(
tmp
=
values
[
k
];
*
tmp
;
tmp
++
)
{
...
...
@@ -737,6 +740,9 @@ array_out(ArrayType *v, Oid element_type)
p
[
l
++
]
=
*
tmp
;
}
p
[
l
]
=
'\0'
;
#else
strcat
(
p
,
values
[
k
]);
#endif
strcat
(
p
,
"
\"
"
);
}
else
...
...
src/interfaces/libpgtcl/pgtclCmds.c
View file @
5d2cf6af
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.3
8 1998/10/14 15:17:51
tgl Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.3
9 1999/01/17 21:12:55
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -472,39 +472,50 @@ Pg_exec(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
get information about the results of a query
syntax:
pg_result result ?option?
pg_result result ?option?
the options are:
-status
the status of the result
-error
the error message, if the status indicates error; otherwise an empty string
-conn
the connection that produced the result
-oid
if command was an INSERT, the OID of the inserted tuple
-numTuples
the number of tuples in the query
-numAttrs
returns the number of attributes returned by the query
-assign arrayName
assign the results to an array, using subscripts of the form
(tupno,attributeName)
-assignbyidx arrayName ?appendstr?
assign the results to an array using the first field's value as a key.
All but the first field of each tuple are stored, using subscripts of the form
(field0value,attributeNameappendstr)
-getTuple tupleNumber
returns the values of the tuple in a list
-tupleArray tupleNumber arrayName
stores the values of the tuple in array arrayName, indexed
by the attributes returned
-attributes
returns a list of the name/type pairs of the tuple attributes
-lAttributes
returns a list of the {name type len} entries of the tuple attributes
-clear
clear the result buffer. Do not reuse after this
-status the status of the result
-error the error message, if the status indicates error; otherwise
an empty string
-conn the connection that produced the result
-oid if command was an INSERT, the OID of the inserted tuple
-numTuples the number of tuples in the query
-numAttrs returns the number of attributes returned by the query
-assign arrayName
assign the results to an array, using subscripts of the form
(tupno,attributeName)
-assignbyidx arrayName ?appendstr?
assign the results to an array using the first field's value
as a key.
All but the first field of each tuple are stored, using
subscripts of the form (field0value,attributeNameappendstr)
-getTuple tupleNumber
returns the values of the tuple in a list
-tupleArray tupleNumber arrayName
stores the values of the tuple in array arrayName, indexed
by the attributes returned
-attributes
returns a list of the name/type pairs of the tuple attributes
-lAttributes
returns a list of the {name type len} entries of the tuple
attributes
-clear clear the result buffer. Do not reuse after this
**********************************/
int
Pg_result
(
ClientData
cData
,
Tcl_Interp
*
interp
,
int
argc
,
char
*
argv
[])
...
...
@@ -621,15 +632,24 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
*/
for
(
tupno
=
0
;
tupno
<
PQntuples
(
result
);
tupno
++
)
{
const
char
*
field0
=
PQgetvalue
(
result
,
tupno
,
0
);
char
*
workspace
=
malloc
(
strlen
(
field0
)
+
strlen
(
appendstr
)
+
210
);
const
char
*
field0
=
#ifdef TCL_ARRAYS
tcl_value
(
PQgetvalue
(
result
,
tupno
,
0
));
#else
PQgetvalue
(
result
,
tupno
,
0
);
#endif
char
*
workspace
=
malloc
(
strlen
(
field0
)
+
strlen
(
appendstr
)
+
210
);
for
(
i
=
1
;
i
<
PQnfields
(
result
);
i
++
)
{
sprintf
(
workspace
,
"%s,%.200s%s"
,
field0
,
PQfname
(
result
,
i
),
appendstr
);
if
(
Tcl_SetVar2
(
interp
,
arrVar
,
workspace
,
#ifdef TCL_ARRAYS
tcl_value
(
PQgetvalue
(
result
,
tupno
,
i
)),
#else
PQgetvalue
(
result
,
tupno
,
i
),
#endif
TCL_LEAVE_ERR_MSG
)
==
NULL
)
{
free
(
workspace
);
...
...
@@ -654,8 +674,15 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
Tcl_AppendResult
(
interp
,
"argument to getTuple cannot exceed number of tuples - 1"
,
0
);
return
TCL_ERROR
;
}
#ifdef TCL_ARRAYS
for
(
i
=
0
;
i
<
PQnfields
(
result
);
i
++
)
{
Tcl_AppendElement
(
interp
,
tcl_value
(
PQgetvalue
(
result
,
tupno
,
i
)));
}
#else
for
(
i
=
0
;
i
<
PQnfields
(
result
);
i
++
)
Tcl_AppendElement
(
interp
,
PQgetvalue
(
result
,
tupno
,
i
));
#endif
return
TCL_OK
;
}
else
if
(
strcmp
(
opt
,
"-tupleArray"
)
==
0
)
...
...
@@ -674,7 +701,11 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
for
(
i
=
0
;
i
<
PQnfields
(
result
);
i
++
)
{
if
(
Tcl_SetVar2
(
interp
,
argv
[
4
],
PQfname
(
result
,
i
),
#ifdef TCL_ARRAYS
tcl_value
(
PQgetvalue
(
result
,
tupno
,
i
)),
#else
PQgetvalue
(
result
,
tupno
,
i
),
#endif
TCL_LEAVE_ERR_MSG
)
==
NULL
)
return
TCL_ERROR
;
}
...
...
@@ -1302,7 +1333,13 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
Tcl_SetVar2
(
interp
,
argv
[
3
],
".tupno"
,
buffer
,
0
);
for
(
column
=
0
;
column
<
ncols
;
column
++
)
Tcl_SetVar2
(
interp
,
argv
[
3
],
info
[
column
].
cname
,
PQgetvalue
(
result
,
tupno
,
column
),
0
);
Tcl_SetVar2
(
interp
,
argv
[
3
],
info
[
column
].
cname
,
#ifdef TCL_ARRAYS
tcl_value
(
PQgetvalue
(
result
,
tupno
,
column
)),
#else
PQgetvalue
(
result
,
tupno
,
column
),
#endif
0
);
Tcl_SetVar2
(
interp
,
argv
[
3
],
".command"
,
"update"
,
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment