mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Synced parser.
Fixed ecpglib trying to read one character after end-of-string. Fixed port number setting in regression suite.
This commit is contained in:
@ -2136,5 +2136,11 @@ Su 3. Sep 14:21:29 CEST 2006
|
|||||||
|
|
||||||
- Synced parser.
|
- Synced parser.
|
||||||
- Added another regression test and fixed tcp test.
|
- Added another regression test and fixed tcp test.
|
||||||
|
|
||||||
|
Tu 5. Sep 11:49:08 CEST 2006
|
||||||
|
|
||||||
|
- Synced parser.
|
||||||
|
- Fixed ecpglib trying to read one character after end-of-string.
|
||||||
|
- Fixed port number setting in regression suite.
|
||||||
- Set ecpg library version to 5.2.
|
- Set ecpg library version to 5.2.
|
||||||
- Set ecpg version to 4.2.1.
|
- Set ecpg version to 4.2.1.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.16 2006/02/04 20:54:42 meskes Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.17 2006/09/05 10:00:52 meskes Exp $ */
|
||||||
|
|
||||||
#define POSTGRES_ECPG_INTERNAL
|
#define POSTGRES_ECPG_INTERNAL
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
@ -53,6 +53,8 @@ replace_variables(char *text)
|
|||||||
*ptr = '?';
|
*ptr = '?';
|
||||||
for (++ptr; *ptr && isvarchar(*ptr); ptr++)
|
for (++ptr; *ptr && isvarchar(*ptr); ptr++)
|
||||||
*ptr = ' ';
|
*ptr = ' ';
|
||||||
|
if (*ptr == '\0') /* we reached the end */
|
||||||
|
ptr--; /* since we will ptr++ in the top level for loop */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.336 2006/09/03 19:30:43 tgl Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.337 2006/09/05 10:00:52 meskes Exp $ */
|
||||||
|
|
||||||
/* Copyright comment */
|
/* Copyright comment */
|
||||||
%{
|
%{
|
||||||
@ -478,8 +478,8 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> ColConstraint ColConstraintElem drop_type Bconst Iresult
|
%type <str> ColConstraint ColConstraintElem drop_type Bconst Iresult
|
||||||
%type <str> TableConstraint OptTableElementList Xconst opt_transaction
|
%type <str> TableConstraint OptTableElementList Xconst opt_transaction
|
||||||
%type <str> ConstraintElem key_actions ColQualList type_name
|
%type <str> ConstraintElem key_actions ColQualList type_name
|
||||||
%type <str> target_list target_el update_target_list alias_clause
|
%type <str> target_list target_el alias_clause
|
||||||
%type <str> update_target_el qualified_name database_name alter_using
|
%type <str> qualified_name database_name alter_using
|
||||||
%type <str> access_method attr_name index_name name func_name
|
%type <str> access_method attr_name index_name name func_name
|
||||||
%type <str> file_name AexprConst c_expr ConstTypename var_list
|
%type <str> file_name AexprConst c_expr ConstTypename var_list
|
||||||
%type <str> a_expr b_expr TruncateStmt CommentStmt OnCommitOption opt_by
|
%type <str> a_expr b_expr TruncateStmt CommentStmt OnCommitOption opt_by
|
||||||
@ -545,7 +545,7 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> OptSchemaName OptSchemaEltList schema_stmt opt_drop_behavior
|
%type <str> OptSchemaName OptSchemaEltList schema_stmt opt_drop_behavior
|
||||||
%type <str> handler_name any_name_list any_name opt_as insert_column_list
|
%type <str> handler_name any_name_list any_name opt_as insert_column_list
|
||||||
%type <str> columnref function_name values_clause AllConstVar
|
%type <str> columnref function_name values_clause AllConstVar
|
||||||
%type <str> values_list insert_column_item DropRuleStmt values_item
|
%type <str> insert_column_item DropRuleStmt ctext_expr
|
||||||
%type <str> createfunc_opt_item set_rest var_list_or_default alter_rel_cmd
|
%type <str> createfunc_opt_item set_rest var_list_or_default alter_rel_cmd
|
||||||
%type <str> CreateFunctionStmt createfunc_opt_list func_table
|
%type <str> CreateFunctionStmt createfunc_opt_list func_table
|
||||||
%type <str> DropUserStmt copy_from copy_opt_list copy_opt_item
|
%type <str> DropUserStmt copy_from copy_opt_list copy_opt_item
|
||||||
@ -589,8 +589,8 @@ add_additional_variables(char *name, bool insert)
|
|||||||
%type <str> locked_rels_list opt_granted_by RevokeRoleStmt alterdb_opt_item using_clause
|
%type <str> locked_rels_list opt_granted_by RevokeRoleStmt alterdb_opt_item using_clause
|
||||||
%type <str> GrantRoleStmt opt_asymmetric aggr_args aggr_args_list old_aggr_definition
|
%type <str> GrantRoleStmt opt_asymmetric aggr_args aggr_args_list old_aggr_definition
|
||||||
%type <str> old_aggr_elem for_locking_items TableLikeOptionList TableLikeOption
|
%type <str> old_aggr_elem for_locking_items TableLikeOptionList TableLikeOption
|
||||||
%type <str> update_target_lists_list set_opt update_target_lists_el update_col_list
|
%type <str> set_target_list set_clause_list set_clause multiple_set_clause
|
||||||
%type <str> update_value_list update_col_list_el
|
%type <str> ctext_expr_list ctext_row single_set_clause set_target
|
||||||
|
|
||||||
%type <struct_union> s_struct_union_symbol
|
%type <struct_union> s_struct_union_symbol
|
||||||
|
|
||||||
@ -3176,16 +3176,35 @@ opt_nowait: NOWAIT { $$ = make_str("nowait"); }
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
UpdateStmt: UPDATE relation_expr_opt_alias
|
UpdateStmt: UPDATE relation_expr_opt_alias
|
||||||
SET set_opt
|
SET set_clause_list
|
||||||
from_clause
|
from_clause
|
||||||
where_clause
|
where_clause
|
||||||
returning_clause
|
returning_clause
|
||||||
{$$ = cat_str(7, make_str("update"), $2, make_str("set"), $4, $5, $6, $7); }
|
{$$ = cat_str(7, make_str("update"), $2, make_str("set"), $4, $5, $6, $7); }
|
||||||
;
|
;
|
||||||
|
|
||||||
set_opt:
|
set_clause_list:
|
||||||
update_target_list { $$ = $1; }
|
set_clause { $$ = $1; }
|
||||||
| update_target_lists_list { $$ = $1; }
|
| set_clause_list ',' set_clause { $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
|
;
|
||||||
|
|
||||||
|
set_clause:
|
||||||
|
single_set_clause { $$ = $1; }
|
||||||
|
| multiple_set_clause { $$ = $1; }
|
||||||
|
;
|
||||||
|
|
||||||
|
single_set_clause:
|
||||||
|
set_target '=' ctext_expr { $$ = cat_str(3, $1, make_str("="), $3); };
|
||||||
|
|
||||||
|
multiple_set_clause:
|
||||||
|
'(' set_target_list ')' '=' ctext_row { $$ = cat_str(4, make_str("("), $2, make_str(")="), $5); };
|
||||||
|
|
||||||
|
set_target:
|
||||||
|
ColId opt_indirection { $$ = cat2_str($1, $2); };
|
||||||
|
|
||||||
|
set_target_list:
|
||||||
|
set_target { $$ = $1; }
|
||||||
|
| set_target_list ',' set_target { $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@ -3433,47 +3452,10 @@ locked_rels_list:
|
|||||||
| /* EMPTY */ { $$ = EMPTY; }
|
| /* EMPTY */ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
values_clause: VALUES '(' values_list ')'
|
values_clause: VALUES ctext_row
|
||||||
{ $$ = cat_str(3, make_str("values("), $3, make_str(")")); }
|
{ $$ = cat2_str(make_str("values"), $2); }
|
||||||
| values_clause ',' '(' values_list ')'
|
| values_clause ',' ctext_row
|
||||||
{ $$ = cat_str(4, $1, make_str(", ("), $4, make_str(")")); }
|
{ $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
;
|
|
||||||
|
|
||||||
values_list: values_item { $$ = $1; }
|
|
||||||
| values_list ',' values_item { $$ = cat_str(3, $1, make_str(","), $3); }
|
|
||||||
;
|
|
||||||
|
|
||||||
values_item: a_expr { $$ = $1; }
|
|
||||||
| DEFAULT { $$ = make_str("DEFAULT"); }
|
|
||||||
;
|
|
||||||
|
|
||||||
update_target_lists_list:
|
|
||||||
update_target_lists_el { $$ = $1; }
|
|
||||||
| update_target_lists_list ',' update_target_lists_el { $$ = cat_str(3, $1, make_str(","), $3); }
|
|
||||||
;
|
|
||||||
|
|
||||||
update_target_lists_el:
|
|
||||||
'(' update_col_list ')' '=' '(' update_value_list ')'
|
|
||||||
{
|
|
||||||
$$ = cat_str(5, make_str("("), $2, make_str(")=("), $6, make_str(")"));
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
update_col_list:
|
|
||||||
update_col_list_el { $$ = $1; }
|
|
||||||
| update_col_list ',' update_col_list_el { $$ = cat_str(3, $1, make_str(","), $3); }
|
|
||||||
;
|
|
||||||
|
|
||||||
update_col_list_el:
|
|
||||||
ColId opt_indirection
|
|
||||||
{
|
|
||||||
$$ = cat2_str($1, $2);
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
update_value_list:
|
|
||||||
values_item { $$ = $1; }
|
|
||||||
| update_value_list ',' values_item { $$ = cat_str(3, $1, make_str(","), $3); }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@ -4356,9 +4338,21 @@ opt_asymmetric: ASYMMETRIC { $$ = make_str("asymmetric"); }
|
|||||||
| /*EMPTY*/ { $$ = EMPTY; }
|
| /*EMPTY*/ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
ctext_expr:
|
||||||
|
a_expr { $$ = $1; }
|
||||||
|
| DEFAULT { $$ = make_str("default"); }
|
||||||
|
;
|
||||||
|
|
||||||
|
ctext_expr_list:
|
||||||
|
ctext_expr { $$ = $1; }
|
||||||
|
| ctext_expr_list ',' ctext_expr { $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
|
;
|
||||||
|
|
||||||
|
ctext_row: '(' ctext_expr_list ')' { $$ = cat_str(3, make_str("("), $2, make_str(")"));};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* target lists for SELECT, UPDATE, INSERT
|
* target lists for SELECT
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
@ -4377,11 +4371,8 @@ target_el: a_expr AS ColLabel
|
|||||||
{ $$ = make_str("*"); }
|
{ $$ = make_str("*"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
/* Target list as found in UPDATE table SET ... */
|
|
||||||
update_target_list: update_target_list ',' update_target_el
|
|
||||||
{ $$ = cat_str(3, $1, make_str(","),$3); }
|
|
||||||
/* INFORMIX workaround, no longer needed
|
/* INFORMIX workaround, no longer needed
|
||||||
| '(' inf_col_list ')' '=' '(' inf_val_list ')'
|
update_target_list: '(' inf_col_list ')' '=' '(' inf_val_list ')'
|
||||||
{
|
{
|
||||||
struct inf_compat_col *ptrc;
|
struct inf_compat_col *ptrc;
|
||||||
struct inf_compat_val *ptrv;
|
struct inf_compat_val *ptrv;
|
||||||
@ -4404,12 +4395,10 @@ update_target_list: update_target_list ',' update_target_el
|
|||||||
vals = cat_str( 3, vals, ptrv->val, make_str(")") );
|
vals = cat_str( 3, vals, ptrv->val, make_str(")") );
|
||||||
}
|
}
|
||||||
$$ = cat_str( 3, cols, make_str("="), vals );
|
$$ = cat_str( 3, cols, make_str("="), vals );
|
||||||
} */
|
}
|
||||||
| update_target_el
|
|
||||||
{ $$ = $1; }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
/* inf_col_list: ColId opt_indirection
|
inf_col_list: ColId opt_indirection
|
||||||
{
|
{
|
||||||
struct inf_compat_col *ptr = mm_alloc(sizeof(struct inf_compat_col));
|
struct inf_compat_col *ptr = mm_alloc(sizeof(struct inf_compat_col));
|
||||||
|
|
||||||
@ -4448,12 +4437,6 @@ inf_val_list: a_expr
|
|||||||
;
|
;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
update_target_el: ColId opt_indirection '=' a_expr
|
|
||||||
{ $$ = cat_str(4, $1, $2, make_str("="), $4); }
|
|
||||||
| ColId opt_indirection '=' DEFAULT
|
|
||||||
{ $$ = cat_str(3, $1, $2, make_str("= default")); }
|
|
||||||
;
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Names and constants
|
* Names and constants
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# $PostgreSQL: pgsql/src/interfaces/ecpg/test/pg_regress.sh,v 1.10 2006/09/04 19:36:21 momjian Exp $
|
# $PostgreSQL: pgsql/src/interfaces/ecpg/test/pg_regress.sh,v 1.11 2006/09/05 10:00:53 meskes Exp $
|
||||||
|
|
||||||
me=`basename $0`
|
me=`basename $0`
|
||||||
|
|
||||||
@ -644,7 +644,7 @@ trap 'sig_trap $?' 1 2 13 15
|
|||||||
if [ x"$temp_install" != x"" ]
|
if [ x"$temp_install" != x"" ]
|
||||||
then
|
then
|
||||||
do_temp_install
|
do_temp_install
|
||||||
PGPORT=$temp_port; export PGPORT
|
#PGPORT=$temp_port; export PGPORT
|
||||||
else # not temp-install
|
else # not temp-install
|
||||||
dont_temp_install
|
dont_temp_install
|
||||||
fi
|
fi
|
||||||
|
Reference in New Issue
Block a user