mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
- Fixed prototype for ECPGprepared_statement to not moan about "const char"
- Fixed parsing of nested structures.
This commit is contained in:
parent
fd950e878c
commit
94189c9fc9
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.26.2.3 2003/12/17 15:31:51 meskes Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.26.2.4 2004/01/28 09:55:53 meskes Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The aim is to get a simpler inteface to the database routines.
|
* The aim is to get a simpler inteface to the database routines.
|
||||||
@ -190,7 +190,7 @@ free_variable(struct variable * var)
|
|||||||
{
|
{
|
||||||
struct variable *var_next;
|
struct variable *var_next;
|
||||||
|
|
||||||
if (var == (struct variable *) NULL)
|
if (var == NULL)
|
||||||
return;
|
return;
|
||||||
var_next = var->next;
|
var_next = var->next;
|
||||||
ECPGfree(var);
|
ECPGfree(var);
|
||||||
@ -206,7 +206,7 @@ free_variable(struct variable * var)
|
|||||||
static void
|
static void
|
||||||
free_statement(struct statement * stmt)
|
free_statement(struct statement * stmt)
|
||||||
{
|
{
|
||||||
if (stmt == (struct statement *) NULL)
|
if (stmt == NULL)
|
||||||
return;
|
return;
|
||||||
free_variable(stmt->inlist);
|
free_variable(stmt->inlist);
|
||||||
free_variable(stmt->outlist);
|
free_variable(stmt->outlist);
|
||||||
@ -333,7 +333,7 @@ ECPGis_type_an_array(int type, const struct statement * stmt, const struct varia
|
|||||||
}
|
}
|
||||||
PQclear(query);
|
PQclear(query);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), type, isarray, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), type, isarray, stmt->lineno);
|
||||||
ECPGlog("ECPGexecute line %d: TYPE database: %d C: %d array: %d\n", stmt->lineno, type, var->type, isarray);
|
ECPGlog("ECPGis_type_an_array line %d: TYPE database: %d C: %d array: %d\n", stmt->lineno, type, var->type, isarray);
|
||||||
return isarray;
|
return isarray;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,7 +356,7 @@ ECPGstore_result(const PGresult *results, int act_field,
|
|||||||
*/
|
*/
|
||||||
if ((var->arrsize > 0 && ntuples > var->arrsize) || (var->ind_arrsize > 0 && ntuples > var->ind_arrsize))
|
if ((var->arrsize > 0 && ntuples > var->arrsize) || (var->ind_arrsize > 0 && ntuples > var->ind_arrsize))
|
||||||
{
|
{
|
||||||
ECPGlog("ECPGexecute line %d: Incorrect number of matches: %d don't fit into array of %d\n",
|
ECPGlog("ECPGstore_result line %d: Incorrect number of matches: %d don't fit into array of %d\n",
|
||||||
stmt->lineno, ntuples, var->arrsize);
|
stmt->lineno, ntuples, var->arrsize);
|
||||||
ECPGraise(stmt->lineno, INFORMIX_MODE(stmt->compat)?ECPG_INFORMIX_SUBSELECT_NOT_ONE:ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
ECPGraise(stmt->lineno, INFORMIX_MODE(stmt->compat)?ECPG_INFORMIX_SUBSELECT_NOT_ONE:ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.9 2003/08/04 00:43:32 momjian Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.9.4.1 2004/01/28 09:55:53 meskes Exp $ */
|
||||||
|
|
||||||
#define POSTGRES_ECPG_INTERNAL
|
#define POSTGRES_ECPG_INTERNAL
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
@ -169,7 +169,7 @@ ECPGdeallocate_all(int lineno)
|
|||||||
|
|
||||||
/* return the prepared statement */
|
/* return the prepared statement */
|
||||||
char *
|
char *
|
||||||
ECPGprepared_statement(char *name)
|
ECPGprepared_statement(const char *name)
|
||||||
{
|
{
|
||||||
struct prepared_statement *this;
|
struct prepared_statement *this;
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ bool ECPGprepare(int, char *, char *);
|
|||||||
bool ECPGdeallocate(int, int, char *);
|
bool ECPGdeallocate(int, int, char *);
|
||||||
bool ECPGdeallocate_one(int, char *);
|
bool ECPGdeallocate_one(int, char *);
|
||||||
bool ECPGdeallocate_all(int);
|
bool ECPGdeallocate_all(int);
|
||||||
char *ECPGprepared_statement(char *);
|
char *ECPGprepared_statement(const char *);
|
||||||
|
|
||||||
void ECPGlog(const char *format,...);
|
void ECPGlog(const char *format,...);
|
||||||
char *ECPGerrmsg(void);
|
char *ECPGerrmsg(void);
|
||||||
|
@ -47,6 +47,10 @@ ECPGstruct_member_dup(struct ECPGstruct_member * rm)
|
|||||||
type = ECPGmake_struct_type(rm->type->u.members, rm->type->type, rm->type->struct_sizeof);
|
type = ECPGmake_struct_type(rm->type->u.members, rm->type->type, rm->type->struct_sizeof);
|
||||||
break;
|
break;
|
||||||
case ECPGt_array:
|
case ECPGt_array:
|
||||||
|
/* if this array does contain a struct again, we have to create the struct too */
|
||||||
|
if (rm->type->u.element->type == ECPGt_struct)
|
||||||
|
type = ECPGmake_struct_type(rm->type->u.element->u.members, rm->type->u.element->type, rm->type->u.element->struct_sizeof);
|
||||||
|
else
|
||||||
type = ECPGmake_array_type(ECPGmake_simple_type(rm->type->u.element->type, rm->type->u.element->size), rm->type->size);
|
type = ECPGmake_array_type(ECPGmake_simple_type(rm->type->u.element->type, rm->type->u.element->size), rm->type->size);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -104,10 +104,10 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members, in
|
|||||||
return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
|
return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
|
||||||
break;
|
break;
|
||||||
case '.':
|
case '.':
|
||||||
if (members->type->type != ECPGt_array)
|
if (members->type->type == ECPGt_array)
|
||||||
return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
|
return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
|
||||||
else
|
else
|
||||||
return (find_struct_member(name, next, members->type->u.members, brace_level));
|
return (find_struct_member(name, end, members->type->u.members, brace_level));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf(errortext, sizeof(errortext), "incorrectly formed variable %s", name);
|
snprintf(errortext, sizeof(errortext), "incorrectly formed variable %s", name);
|
||||||
|
Loading…
Reference in New Issue
Block a user