mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
*** empty log message ***
This commit is contained in:
parent
dad5bb01ba
commit
8e7764d9c2
@ -857,5 +857,9 @@ Tue Mar 7 10:58:21 CET 2000
|
|||||||
|
|
||||||
- More cleanup in ecpglib.
|
- More cleanup in ecpglib.
|
||||||
- Fixed ecpg.c not not free variable list twice.
|
- Fixed ecpg.c not not free variable list twice.
|
||||||
|
|
||||||
|
Thu Mar 9 10:12:57 CET 2000
|
||||||
|
|
||||||
|
- Fixed another memory bug in the parser.
|
||||||
- Set library version to 3.1.0.
|
- Set library version to 3.1.0.
|
||||||
- Set ecpg version to 2.7.0.
|
- Set ecpg version to 2.7.0.
|
||||||
|
@ -6,13 +6,13 @@
|
|||||||
# Copyright (c) 1994, Regents of the University of California
|
# Copyright (c) 1994, Regents of the University of California
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.63 2000/03/08 01:58:24 momjian Exp $
|
# $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.64 2000/03/09 09:17:10 meskes Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
NAME= ecpg
|
NAME= ecpg
|
||||||
SO_MAJOR_VERSION= 3
|
SO_MAJOR_VERSION= 3
|
||||||
SO_MINOR_VERSION= 1
|
SO_MINOR_VERSION= 1.0
|
||||||
|
|
||||||
SRCDIR= @top_srcdir@
|
SRCDIR= @top_srcdir@
|
||||||
include $(SRCDIR)/Makefile.global
|
include $(SRCDIR)/Makefile.global
|
||||||
|
@ -177,8 +177,7 @@ main(int argc, char *const argv[])
|
|||||||
for (ptr = cur; ptr != NULL;)
|
for (ptr = cur; ptr != NULL;)
|
||||||
{
|
{
|
||||||
struct cursor *this = ptr;
|
struct cursor *this = ptr;
|
||||||
struct arguments *l1,
|
struct arguments *l1, *l2;
|
||||||
*l2;
|
|
||||||
|
|
||||||
free(ptr->command);
|
free(ptr->command);
|
||||||
free(ptr->connection);
|
free(ptr->connection);
|
||||||
|
@ -59,6 +59,7 @@ extern void add_descriptor(char *,char *);
|
|||||||
extern void drop_descriptor(char *,char *);
|
extern void drop_descriptor(char *,char *);
|
||||||
extern struct descriptor *lookup_descriptor(char *,char *);
|
extern struct descriptor *lookup_descriptor(char *,char *);
|
||||||
extern void add_variable(struct arguments ** , struct variable * , struct variable *);
|
extern void add_variable(struct arguments ** , struct variable * , struct variable *);
|
||||||
|
extern void append_variable(struct arguments ** , struct variable * , struct variable *);
|
||||||
extern void dump_variables(struct arguments *, int);
|
extern void dump_variables(struct arguments *, int);
|
||||||
extern struct typedefs *get_typedef(char *);
|
extern struct typedefs *get_typedef(char *);
|
||||||
extern void adjust_array(enum ECPGttype, int *, int *, int, int, bool);
|
extern void adjust_array(enum ECPGttype, int *, int *, int, int, bool);
|
||||||
|
@ -525,15 +525,13 @@ stmt: AlterTableStmt { output_statement($1, 0, NULL, connection); }
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* merge variables given in prepare statement with those given here */
|
/* merge variables given in prepare statement with those given here */
|
||||||
for (p = argsinsert; p && p->next; p = p->next);
|
for (p = ptr->argsinsert; p; p = p->next)
|
||||||
if (p)
|
append_variable(&argsinsert, p->variable, p->indicator);
|
||||||
p->next = ptr->argsinsert;
|
|
||||||
else
|
|
||||||
argsinsert = ptr->argsinsert;
|
|
||||||
|
|
||||||
argsresult = ptr->argsresult;
|
for (p = ptr->argsresult; p; p = p->next)
|
||||||
|
add_variable(&argsresult, p->variable, p->indicator);
|
||||||
|
|
||||||
output_statement(ptr->command, 0, NULL, ptr->connection);
|
output_statement(mm_strdup(ptr->command), 0, NULL, ptr->connection ? mm_strdup(ptr->connection) : NULL);
|
||||||
}
|
}
|
||||||
| ECPGPrepare {
|
| ECPGPrepare {
|
||||||
if (connection)
|
if (connection)
|
||||||
|
@ -189,17 +189,35 @@ reset_variables(void)
|
|||||||
argsresult = NULL;
|
argsresult = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add a variable to a request. */
|
/* Insert a new variable into our request list. */
|
||||||
void
|
void
|
||||||
add_variable(struct arguments ** list, struct variable * var, struct variable * ind)
|
add_variable(struct arguments ** list, struct variable * var, struct variable * ind)
|
||||||
{
|
{
|
||||||
struct arguments * p = (struct arguments *)mm_alloc(sizeof(struct arguments));
|
struct arguments *p = (struct arguments *)mm_alloc(sizeof(struct arguments));
|
||||||
|
|
||||||
p->variable = var;
|
p->variable = var;
|
||||||
p->indicator = ind;
|
p->indicator = ind;
|
||||||
p->next = *list;
|
p->next = *list;
|
||||||
*list = p;
|
*list = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Append a new variable to our request list. */
|
||||||
|
void
|
||||||
|
append_variable(struct arguments ** list, struct variable * var, struct variable * ind)
|
||||||
|
{
|
||||||
|
struct arguments *p, *new = (struct arguments *)mm_alloc(sizeof(struct arguments));
|
||||||
|
|
||||||
|
for (p = *list; p && p->next; p = p->next);
|
||||||
|
|
||||||
|
new->variable = var;
|
||||||
|
new->indicator = ind;
|
||||||
|
new->next = NULL;
|
||||||
|
|
||||||
|
if (p)
|
||||||
|
p->next = new;
|
||||||
|
else
|
||||||
|
*list = new;
|
||||||
|
}
|
||||||
|
|
||||||
/* Dump out a list of all the variable on this list.
|
/* Dump out a list of all the variable on this list.
|
||||||
This is a recursive function that works from the end of the list and
|
This is a recursive function that works from the end of the list and
|
||||||
|
Loading…
x
Reference in New Issue
Block a user