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 @@
...
@@ -7,7 +7,7 @@
*
*
*
*
* IDENTIFICATION
* 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)
...
@@ -699,8 +699,10 @@ array_out(ArrayType *v, Oid element_type)
for
(
tmp
=
values
[
i
];
*
tmp
;
tmp
++
)
for
(
tmp
=
values
[
i
];
*
tmp
;
tmp
++
)
{
{
overall_length
+=
1
;
overall_length
+=
1
;
#ifndef TCL_ARRAYS
if
(
*
tmp
==
'"'
)
if
(
*
tmp
==
'"'
)
overall_length
+=
1
;
overall_length
+=
1
;
#endif
}
}
overall_length
+=
1
;
overall_length
+=
1
;
}
}
...
@@ -729,6 +731,7 @@ array_out(ArrayType *v, Oid element_type)
...
@@ -729,6 +731,7 @@ array_out(ArrayType *v, Oid element_type)
if
(
!
typbyval
)
if
(
!
typbyval
)
{
{
strcat
(
p
,
"
\"
"
);
strcat
(
p
,
"
\"
"
);
#ifndef TCL_ARRAYS
l
=
strlen
(
p
);
l
=
strlen
(
p
);
for
(
tmp
=
values
[
k
];
*
tmp
;
tmp
++
)
for
(
tmp
=
values
[
k
];
*
tmp
;
tmp
++
)
{
{
...
@@ -737,6 +740,9 @@ array_out(ArrayType *v, Oid element_type)
...
@@ -737,6 +740,9 @@ array_out(ArrayType *v, Oid element_type)
p
[
l
++
]
=
*
tmp
;
p
[
l
++
]
=
*
tmp
;
}
}
p
[
l
]
=
'\0'
;
p
[
l
]
=
'\0'
;
#else
strcat
(
p
,
values
[
k
]);
#endif
strcat
(
p
,
"
\"
"
);
strcat
(
p
,
"
\"
"
);
}
}
else
else
...
...
src/interfaces/libpgtcl/pgtclCmds.c
View file @
5d2cf6af
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
*
*
*
*
* IDENTIFICATION
* 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[])
...
@@ -472,39 +472,50 @@ Pg_exec(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
get information about the results of a query
get information about the results of a query
syntax:
syntax:
pg_result result ?option?
pg_result result ?option?
the options are:
the options are:
-status
the status of the result
-status the status of the result
-error
the error message, if the status indicates error; otherwise an empty string
-error the error message, if the status indicates error; otherwise
-conn
an empty string
the connection that produced the result
-oid
-conn the connection that produced the result
if command was an INSERT, the OID of the inserted tuple
-numTuples
-oid if command was an INSERT, the OID of the inserted tuple
the number of tuples in the query
-numAttrs
-numTuples the number of tuples in the query
returns the number of attributes returned by the query
-assign arrayName
-numAttrs returns the number of attributes returned by the query
assign the results to an array, using subscripts of the form
(tupno,attributeName)
-assign arrayName
-assignbyidx arrayName ?appendstr?
assign the results to an array, using subscripts of the form
assign the results to an array using the first field's value as a key.
(tupno,attributeName)
All but the first field of each tuple are stored, using subscripts of the form
(field0value,attributeNameappendstr)
-assignbyidx arrayName ?appendstr?
-getTuple tupleNumber
assign the results to an array using the first field's value
returns the values of the tuple in a list
as a key.
-tupleArray tupleNumber arrayName
All but the first field of each tuple are stored, using
stores the values of the tuple in array arrayName, indexed
subscripts of the form (field0value,attributeNameappendstr)
by the attributes returned
-attributes
-getTuple tupleNumber
returns a list of the name/type pairs of the tuple attributes
returns the values of the tuple in a list
-lAttributes
returns a list of the {name type len} entries of the tuple attributes
-tupleArray tupleNumber arrayName
-clear
stores the values of the tuple in array arrayName, indexed
clear the result buffer. Do not reuse after this
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
int
Pg_result
(
ClientData
cData
,
Tcl_Interp
*
interp
,
int
argc
,
char
*
argv
[])
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[])
...
@@ -621,15 +632,24 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
*/
*/
for
(
tupno
=
0
;
tupno
<
PQntuples
(
result
);
tupno
++
)
for
(
tupno
=
0
;
tupno
<
PQntuples
(
result
);
tupno
++
)
{
{
const
char
*
field0
=
PQgetvalue
(
result
,
tupno
,
0
);
const
char
*
field0
=
char
*
workspace
=
malloc
(
strlen
(
field0
)
+
strlen
(
appendstr
)
+
210
);
#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
++
)
for
(
i
=
1
;
i
<
PQnfields
(
result
);
i
++
)
{
{
sprintf
(
workspace
,
"%s,%.200s%s"
,
field0
,
PQfname
(
result
,
i
),
sprintf
(
workspace
,
"%s,%.200s%s"
,
field0
,
PQfname
(
result
,
i
),
appendstr
);
appendstr
);
if
(
Tcl_SetVar2
(
interp
,
arrVar
,
workspace
,
if
(
Tcl_SetVar2
(
interp
,
arrVar
,
workspace
,
#ifdef TCL_ARRAYS
tcl_value
(
PQgetvalue
(
result
,
tupno
,
i
)),
#else
PQgetvalue
(
result
,
tupno
,
i
),
PQgetvalue
(
result
,
tupno
,
i
),
#endif
TCL_LEAVE_ERR_MSG
)
==
NULL
)
TCL_LEAVE_ERR_MSG
)
==
NULL
)
{
{
free
(
workspace
);
free
(
workspace
);
...
@@ -654,8 +674,15 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
...
@@ -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
);
Tcl_AppendResult
(
interp
,
"argument to getTuple cannot exceed number of tuples - 1"
,
0
);
return
TCL_ERROR
;
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
++
)
for
(
i
=
0
;
i
<
PQnfields
(
result
);
i
++
)
Tcl_AppendElement
(
interp
,
PQgetvalue
(
result
,
tupno
,
i
));
Tcl_AppendElement
(
interp
,
PQgetvalue
(
result
,
tupno
,
i
));
#endif
return
TCL_OK
;
return
TCL_OK
;
}
}
else
if
(
strcmp
(
opt
,
"-tupleArray"
)
==
0
)
else
if
(
strcmp
(
opt
,
"-tupleArray"
)
==
0
)
...
@@ -674,7 +701,11 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
...
@@ -674,7 +701,11 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
for
(
i
=
0
;
i
<
PQnfields
(
result
);
i
++
)
for
(
i
=
0
;
i
<
PQnfields
(
result
);
i
++
)
{
{
if
(
Tcl_SetVar2
(
interp
,
argv
[
4
],
PQfname
(
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
),
PQgetvalue
(
result
,
tupno
,
i
),
#endif
TCL_LEAVE_ERR_MSG
)
==
NULL
)
TCL_LEAVE_ERR_MSG
)
==
NULL
)
return
TCL_ERROR
;
return
TCL_ERROR
;
}
}
...
@@ -1302,7 +1333,13 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
...
@@ -1302,7 +1333,13 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
Tcl_SetVar2
(
interp
,
argv
[
3
],
".tupno"
,
buffer
,
0
);
Tcl_SetVar2
(
interp
,
argv
[
3
],
".tupno"
,
buffer
,
0
);
for
(
column
=
0
;
column
<
ncols
;
column
++
)
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
);
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