git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 1096400)
Synced parser.
Tue, 5 Sep 2006 10:00:53 +0000 (10:00 +0000)
Tue, 5 Sep 2006 10:00:53 +0000 (10:00 +0000)
Fixed ecpglib trying to read one character after end-of-string.
Fixed port number setting in regression suite.


diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 5206ec1f6adc656f4b5369e5a6fbda4d1c4199f6..72173d1dda47a28058f9a61611de937caa5490ac 100644 (file)
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -2136,5 +2136,11 @@ Su 3. Sep 14:21:29 CEST 2006
- Synced parser.
- 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 version to 4.2.1.
diff --git a/src/interfaces/ecpg/ecpglib/prepare.c b/src/interfaces/ecpg/ecpglib/prepare.c
index 0401fe55651819dd73410be549432b02b3153392..19b771afea20719be4133adef300eac28e941b32 100644 (file)
--- a/src/interfaces/ecpg/ecpglib/prepare.c
+++ b/src/interfaces/ecpg/ecpglib/prepare.c
@@ -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
#include "postgres_fe.h"
@@ -53,6 +53,8 @@ replace_variables(char *text)
*ptr = '?';
for (++ptr; *ptr && isvarchar(*ptr); ptr++)
*ptr = ' ';
+ if (*ptr == '0円') /* we reached the end */
+ ptr--; /* since we will ptr++ in the top level for loop */
}
}
}
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index e3cb02a2f9382f0cc125846882afd122a3d08612..c707c96a9d3b3ce4e39b0b15bb62930c06e33b5c 100644 (file)
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -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 */
%{
@@ -478,8 +478,8 @@ add_additional_variables(char *name, bool insert)
%type <str> ColConstraint ColConstraintElem drop_type Bconst Iresult
%type <str> TableConstraint OptTableElementList Xconst opt_transaction
%type <str> ConstraintElem key_actions ColQualList type_name
-%type <str> target_list target_el update_target_list alias_clause
-%type <str> update_target_el qualified_name database_name alter_using
+%type <str> target_list target_el alias_clause
+%type <str> qualified_name database_name alter_using
%type <str> access_method attr_name index_name name func_name
%type <str> file_name AexprConst c_expr ConstTypename var_list
%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> handler_name any_name_list any_name opt_as insert_column_list
%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> CreateFunctionStmt createfunc_opt_list func_table
%type <str> DropUserStmt copy_from copy_opt_list copy_opt_item
@@ -577,7 +577,7 @@ add_additional_variables(char *name, bool insert)
%type <str> reserved_keyword unreserved_keyword ecpg_interval opt_ecpg_using
%type <str> col_name_keyword func_name_keyword precision opt_scale
%type <str> ECPGTypeName using_list ECPGColLabelCommon UsingConst
-%type <str> using_descriptor into_descriptor
+%type <str> using_descriptor into_descriptor
%type <str> prepared_name struct_union_type_with_symbol OptConsTableSpace
%type <str> ECPGunreserved ECPGunreserved_interval cvariable opt_bit_field
%type <str> AlterOwnerStmt OptTableSpaceOwner CreateTableSpaceStmt
@@ -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> GrantRoleStmt opt_asymmetric aggr_args aggr_args_list old_aggr_definition
%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> update_value_list update_col_list_el
+%type <str> set_target_list set_clause_list set_clause multiple_set_clause
+%type <str> ctext_expr_list ctext_row single_set_clause set_target
%type <struct_union> s_struct_union_symbol
@@ -3176,16 +3176,35 @@ opt_nowait: NOWAIT { $$ = make_str("nowait"); }
*****************************************************************************/
UpdateStmt: UPDATE relation_expr_opt_alias
- SET set_opt
+ SET set_clause_list
from_clause
where_clause
returning_clause
{$$ = cat_str(7, make_str("update"), 2,ドル make_str("set"), 4,ドル 5,ドル 6,ドル 7ドル); }
;
-set_opt:
- update_target_list { $$ = 1ドル; }
- | update_target_lists_list { $$ = 1ドル; }
+set_clause_list:
+ set_clause { $$ = 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; }
;
-values_clause: VALUES '(' values_list ')'
- { $$ = cat_str(3, make_str("values("), 3,ドル make_str(")")); }
- | values_clause ',' '(' values_list ')'
- { $$ = cat_str(4, 1,ドル make_str(", ("), 4,ドル make_str(")")); }
- ;
-
-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ドル); }
+values_clause: VALUES ctext_row
+ { $$ = cat2_str(make_str("values"), 2ドル); }
+ | values_clause ',' ctext_row
+ { $$ = cat_str(3, 1,ドル make_str(","), 3ドル); }
;
/*****************************************************************************
@@ -4356,9 +4338,21 @@ opt_asymmetric: ASYMMETRIC { $$ = make_str("asymmetric"); }
| /*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("*"); }
;
-/* 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
- | '(' inf_col_list ')' '=' '(' inf_val_list ')'
+/* INFORMIX workaround, no longer needed
+update_target_list: '(' inf_col_list ')' '=' '(' inf_val_list ')'
{
struct inf_compat_col *ptrc;
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(")") );
}
$$ = 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));
@@ -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
diff --git a/src/interfaces/ecpg/test/pg_regress.sh b/src/interfaces/ecpg/test/pg_regress.sh
index 41632361db8e13f821851bacf8a7202ef1aff69c..9b427efc72b1e25a54d05c0d58fa4372208e53d6 100644 (file)
--- a/src/interfaces/ecpg/test/pg_regress.sh
+++ b/src/interfaces/ecpg/test/pg_regress.sh
@@ -1,5 +1,5 @@
#! /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ドル`
@@ -644,7 +644,7 @@ trap 'sig_trap $?' 1 2 13 15
if [ x"$temp_install" != x"" ]
then
do_temp_install
- PGPORT=$temp_port; export PGPORT
+ #PGPORT=$temp_port; export PGPORT
else # not temp-install
dont_temp_install
fi
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /