OSDN Git Service

*** empty log message ***
authorMichael Meskes <meskes@postgresql.org>
Thu, 2 Mar 2000 12:13:32 +0000 (12:13 +0000)
committerMichael Meskes <meskes@postgresql.org>
Thu, 2 Mar 2000 12:13:32 +0000 (12:13 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/preproc/extern.h
src/interfaces/ecpg/preproc/output.c
src/interfaces/ecpg/preproc/preproc.y
src/interfaces/ecpg/preproc/variable.c

index c4d47d9..e6009b4 100644 (file)
@@ -837,5 +837,11 @@ Wed Mar  1 10:49:03 CET 2000
 
        - Synced preproc.y with gram.y.
        - Added output of arrays.
+
+Thu Mar  2 11:25:09 CET 2000
+
+       - Fixed some parsing problems. A variable can now be a reserved
+         SQL keyword.
+       - Made sure double quotes in statements are correctly quoted.
        - Set library version to 3.1.0.
        - Set ecpg version to 2.7.0.
index 7cf4294..1134e42 100644 (file)
@@ -39,7 +39,7 @@ extern const char *get_dtype(enum ECPGdtype);
 extern void lex_init(void);
 extern char *make_str(const char *);
 extern void output_line_number(void);
-extern void output_statement(char *, int, char *);
+extern void output_statement(char *, int, char *, char *, struct arguments *, struct arguments *);
 extern void output_simple_statement(char *);
 extern char *hashline_number(void);
 extern int     yyparse(void);
index 91b2308..d67f9ea 100644 (file)
@@ -13,7 +13,15 @@ output_line_number()
 void
 output_simple_statement(char *cmd)
 {
-       fputs(cmd, yyout);
+       int i, j = strlen(cmd);;
+       
+       /* do this char by char as we have to filter '\"' */
+       for (i = 0; i < j; i++) {
+               if (cmd[i] != '"')
+                       fputc(cmd[i], yyout);
+               else
+                       fputs("\\\"", yyout);
+       }
        output_line_number();
         free(cmd);
 }
@@ -86,19 +94,20 @@ hashline_number(void)
 }
 
 void
-output_statement(char * stmt, int mode, char *descriptor)
+output_statement(char * stmt, int mode, char *descriptor,
+       char *con, struct arguments *insert, struct arguments *result)
 {
-       int i, j=strlen(stmt);
+       int i, j = strlen(stmt);
 
        if (descriptor == NULL)
-               fprintf(yyout, "{ ECPGdo(__LINE__, %s, \"", connection ? connection : "NULL");
+               fprintf(yyout, "{ ECPGdo(__LINE__, %s, \"", con ? con : "NULL");
        else
                fprintf(yyout, "{ ECPGdo_descriptor(__LINE__, %s, \"%s\", \"",
-                               connection ? connection : "NULL", descriptor);
+                               con ? con : "NULL", descriptor);
 
        /* do this char by char as we have to filter '\"' */
-       for (i = 0;i < j; i++) {
-               if (stmt[i] != '\"')
+       for (i = 0; i < j; i++) {
+               if (stmt[i] != '"')
                        fputc(stmt[i], yyout);
                else
                        fputs("\\\"", yyout);
@@ -109,9 +118,9 @@ output_statement(char * stmt, int mode, char *descriptor)
                fputs("\", ", yyout);
                
                /* dump variables to C file */
-               dump_variables(argsinsert, 1);
+               dump_variables(insert, 1);
                fputs("ECPGt_EOIT, ", yyout);
-               dump_variables(argsresult, 1);
+               dump_variables(result, 1);
                fputs("ECPGt_EORT);", yyout);
        }
        else
@@ -120,7 +129,8 @@ output_statement(char * stmt, int mode, char *descriptor)
        mode |= 2;
        whenever_action(mode);
        free(stmt);
-       free(descriptor);
+       if (descriptor != NULL)
+               free(descriptor);
        if (connection != NULL)
                free(connection);
 }
index c1fe45c..a65c822 100644 (file)
@@ -350,17 +350,18 @@ make_name(void)
 %type  <str>    storage_clause opt_initializer c_anything blockstart
 %type  <str>    blockend variable_list variable c_thing c_term
 %type  <str>   opt_pointer cvariable ECPGDisconnect dis_name storage_modifier
-%type  <str>   stmt symbol opt_symbol ECPGRelease execstring server_name
+%type  <str>   stmt ECPGRelease execstring server_name
 %type  <str>   connection_object opt_server opt_port c_stuff opt_reference
 %type  <str>    user_name opt_user char_variable ora_user ident
 %type  <str>    db_prefix server opt_options opt_connection_name c_list
-%type  <str>   ECPGSetConnection cpp_line ECPGTypedef c_args
+%type  <str>   ECPGSetConnection cpp_line ECPGTypedef c_args ECPGKeywords
 %type  <str>   enum_type civariableonly ECPGCursorStmt ECPGDeallocate
 %type  <str>   ECPGFree ECPGDeclare ECPGVar opt_at enum_definition
 %type  <str>    struct_type s_struct declaration declarations variable_declarations
 %type  <str>    s_struct s_union union_type ECPGSetAutocommit on_off
-%type  <str>   ECPGAllocateDescr ECPGDeallocateDescr
-%type  <str>   ECPGGetDescriptorHeader 
+%type  <str>   ECPGAllocateDescr ECPGDeallocateDescr symbol opt_symbol
+%type  <str>   ECPGGetDescriptorHeader ECPGColId ECPGColLabel ECPGTypeName
+%type  <str>   ECPGLabelTypeName
 
 %type  <descriptor> ECPGFetchDescStmt ECPGGetDescriptor
 
@@ -391,64 +392,64 @@ statement: ecpgstart opt_at stmt ';'      { connection = NULL; }
 
 opt_at:        SQL_AT connection_target        { connection = $2; }
 
-stmt:  AlterTableStmt                  { output_statement($1, 0, NULL); }
-               | AlterGroupStmt        { output_statement($1, 0, NULL); }
-               | AlterUserStmt         { output_statement($1, 0, NULL); }
-               | ClosePortalStmt       { output_statement($1, 0, NULL); }
-               | CommentStmt           { output_statement($1, 0, NULL); }
-               | CopyStmt              { output_statement($1, 0, NULL); }
-               | CreateStmt            { output_statement($1, 0, NULL); }
-               | CreateAsStmt          { output_statement($1, 0, NULL); }
-               | CreateGroupStmt       { output_statement($1, 0, NULL); }
-               | CreateSeqStmt         { output_statement($1, 0, NULL); }
-               | CreatePLangStmt       { output_statement($1, 0, NULL); }
-               | CreateTrigStmt        { output_statement($1, 0, NULL); }
-               | CreateUserStmt        { output_statement($1, 0, NULL); }
-               | ClusterStmt           { output_statement($1, 0, NULL); }
-               | DefineStmt            { output_statement($1, 0, NULL); }
-               | DropStmt              { output_statement($1, 0, NULL); }
-               | TruncateStmt          { output_statement($1, 0, NULL); }
-               | DropGroupStmt         { output_statement($1, 0, NULL); }
-               | DropPLangStmt         { output_statement($1, 0, NULL); }
-               | DropTrigStmt          { output_statement($1, 0, NULL); }
-               | DropUserStmt          { output_statement($1, 0, NULL); }
-               | ExtendStmt            { output_statement($1, 0, NULL); }
-               | ExplainStmt           { output_statement($1, 0, NULL); }
-               | FetchStmt             { output_statement($1, 1, NULL); }
-               | GrantStmt             { output_statement($1, 0, NULL); }
-               | IndexStmt             { output_statement($1, 0, NULL); }
-               | ListenStmt            { output_statement($1, 0, NULL); }
-               | UnlistenStmt          { output_statement($1, 0, NULL); }
-               | LockStmt              { output_statement($1, 0, NULL); }
-               | ProcedureStmt         { output_statement($1, 0, NULL); }
-               | ReindexStmt           { output_statement($1, 0, NULL); }
-               | RemoveAggrStmt        { output_statement($1, 0, NULL); }
-               | RemoveOperStmt        { output_statement($1, 0, NULL); }
-               | RemoveFuncStmt        { output_statement($1, 0, NULL); }
-               | RemoveStmt            { output_statement($1, 0, NULL); }
-               | RenameStmt            { output_statement($1, 0, NULL); }
-               | RevokeStmt            { output_statement($1, 0, NULL); }
+stmt:  AlterTableStmt                  { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | AlterGroupStmt        { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | AlterUserStmt         { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ClosePortalStmt       { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CommentStmt           { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CopyStmt              { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreateStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreateAsStmt          { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreateGroupStmt       { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreateSeqStmt         { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreatePLangStmt       { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreateTrigStmt        { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreateUserStmt        { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ClusterStmt           { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | DefineStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | DropStmt              { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | TruncateStmt          { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | DropGroupStmt         { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | DropPLangStmt         { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | DropTrigStmt          { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | DropUserStmt          { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ExtendStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ExplainStmt           { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | FetchStmt             { output_statement($1, 1, NULL, connection, argsinsert, argsresult); }
+               | GrantStmt             { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | IndexStmt             { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ListenStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | UnlistenStmt          { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | LockStmt              { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ProcedureStmt         { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ReindexStmt           { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | RemoveAggrStmt        { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | RemoveOperStmt        { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | RemoveFuncStmt        { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | RemoveStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | RenameStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | RevokeStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
                 | OptimizableStmt      {
                                                if (strncmp($1, "/* " , sizeof("/* ")-1) == 0)
                                                        output_simple_statement($1);
                                                else
-                                                       output_statement($1, 1, NULL);
+                                                       output_statement($1, 1, NULL, connection, argsinsert, argsresult);
                                        }
-               | RuleStmt              { output_statement($1, 0, NULL); }
+               | RuleStmt              { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
                | TransactionStmt       {
                                                fprintf(yyout, "{ ECPGtrans(__LINE__, %s, \"%s\");", connection ? connection : "NULL", $1);
                                                whenever_action(2);
                                                free($1);
                                        }
-               | ViewStmt              { output_statement($1, 0, NULL); }
-               | LoadStmt              { output_statement($1, 0, NULL); }
-               | CreatedbStmt          { output_statement($1, 0, NULL); }
-               | DropdbStmt            { output_statement($1, 0, NULL); }
-               | VacuumStmt            { output_statement($1, 0, NULL); }
-               | VariableSetStmt       { output_statement($1, 0, NULL); }
-               | VariableShowStmt      { output_statement($1, 0, NULL); }
-               | VariableResetStmt     { output_statement($1, 0, NULL); }
-               | ConstraintsSetStmt    { output_statement($1, 0, NULL); }
+               | ViewStmt              { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | LoadStmt              { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | CreatedbStmt          { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | DropdbStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | VacuumStmt            { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | VariableSetStmt       { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | VariableShowStmt      { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | VariableResetStmt     { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ConstraintsSetStmt    { output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
                | ECPGAllocateDescr     {       fprintf(yyout,"ECPGallocate_desc(__LINE__, \"%s\");",$1);
                                                                whenever_action(0);
                                                                free($1);
@@ -488,8 +489,8 @@ stmt:  AlterTableStmt                       { output_statement($1, 0, NULL); }
                                                whenever_action(2);
                                                free($1);
                                        } 
-               | ECPGExecute           {       output_statement($1, 0, NULL); }
-               | ECPGFetchDescStmt     {       output_statement($1.str, 1, $1.name); }
+               | ECPGExecute           {       output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+               | ECPGFetchDescStmt     {       output_statement($1.str, 1, $1.name, connection, argsinsert, argsresult); }
                | ECPGFree              {
                                                fprintf(yyout, "{ ECPGdeallocate(__LINE__, \"%s\");", $1);
 
@@ -509,7 +510,8 @@ stmt:  AlterTableStmt                       { output_statement($1, 0, NULL); }
                                        }
                | ECPGOpen              {       
                                                struct cursor *ptr;
-                                                
+                                               struct arguments *p;
                                                for (ptr = cur; ptr != NULL; ptr=ptr->next)
                                                {
                                                       if (strcmp(ptr->name, $1) == 0)
@@ -521,16 +523,15 @@ stmt:  AlterTableStmt                     { output_statement($1, 0, NULL); }
                                                        sprintf(errortext, "trying to open undeclared cursor %s\n", $1);
                                                        mmerror(ET_ERROR, errortext);
                                                }
-                  
-                                               fprintf(yyout, "{ ECPGdo(__LINE__, %s, \"%s\",", ptr->connection ? ptr->connection : "NULL", ptr->command);
-                                               /* dump variables to C file*/
-                                               dump_variables(ptr->argsinsert, 0);
-                                               dump_variables(argsinsert, 0);
-                                               fputs("ECPGt_EOIT, ", yyout);
-                                               dump_variables(ptr->argsresult, 0);
-                                               fputs("ECPGt_EORT);", yyout);
-                                               whenever_action(2);
-                                               free($1);
+
+                                               /* merge variables given in prepare statement with those given here */
+                                               for (p = argsinsert; p && p->next; p = p->next);
+                                               if (p)
+                                                       p->next = ptr->argsinsert;
+                                               else
+                                                       argsinsert = ptr->argsinsert;
+
+                                               output_statement(ptr->command, 0, NULL, ptr->connection, argsinsert, ptr->argsresult);
                                        }
                | ECPGPrepare           {
                                                if (connection)
@@ -3840,138 +3841,10 @@ TypeId:  ColId
  *  list due to shift/reduce conflicts in yacc. If so, move
  *  down to the ColLabel entity. - thomas 1997-11-06
  */
-ColId:  ident                                  { $$ = $1; }
-               | datetime                      { $$ = $1; }
-               | ABSOLUTE                      { $$ = make_str("absolute"); }
-               | ACCESS                        { $$ = make_str("access"); }
-               | ACTION                        { $$ = make_str("action"); }
-               | AFTER                         { $$ = make_str("after"); }
-               | AGGREGATE                     { $$ = make_str("aggregate"); }
-               | BACKWARD                      { $$ = make_str("backward"); }
-               | BEFORE                        { $$ = make_str("before"); }
-               | CACHE                         { $$ = make_str("cache"); }
-               | COMMENT                       { $$ = make_str("comment"); } 
-               | COMMITTED                     { $$ = make_str("committed"); }
-               | CONSTRAINTS                   { $$ = make_str("constraints"); }
-               | CREATEDB                      { $$ = make_str("createdb"); }
-               | CREATEUSER                    { $$ = make_str("createuser"); }
-               | CYCLE                         { $$ = make_str("cycle"); }
-               | DATABASE                      { $$ = make_str("database"); }
-               | DEFERRED                      { $$ = make_str("deferred"); }
-               | DELIMITERS                    { $$ = make_str("delimiters"); }
-               | DOUBLE                        { $$ = make_str("double"); }
-               | EACH                          { $$ = make_str("each"); }
-               | ENCODING                      { $$ = make_str("encoding"); }
-               | EXCLUSIVE                     { $$ = make_str("exclusive"); }
-               | FORWARD                       { $$ = make_str("forward"); }
-               | FUNCTION                      { $$ = make_str("function"); }
-               | HANDLER                       { $$ = make_str("handler"); }
-               | IMMEDIATE                     { $$ = make_str("immediate"); }
-               | INCREMENT                     { $$ = make_str("increment"); }
-               | INDEX                         { $$ = make_str("index"); }
-               | INHERITS                      { $$ = make_str("inherits"); }
-               | INSENSITIVE                   { $$ = make_str("insensitive"); }
-               | INSTEAD                       { $$ = make_str("instead"); }
-               | INTERVAL                      { $$ = make_str("interval"); }
-               | ISNULL                        { $$ = make_str("isnull"); }
-               | ISOLATION                     { $$ = make_str("isolation"); }
-               | KEY                           { $$ = make_str("key"); }
-               | LANGUAGE                      { $$ = make_str("language"); }
-               | LANCOMPILER                   { $$ = make_str("lancompiler"); }
-               | LEVEL                         { $$ = make_str("level"); }
-               | LOCATION                      { $$ = make_str("location"); }
-               | MATCH                         { $$ = make_str("match"); }
-               | MAXVALUE                      { $$ = make_str("maxvalue"); }
-               | MINVALUE                      { $$ = make_str("minvalue"); }
-               | MODE                          { $$ = make_str("mode"); }
-               | NEXT                          { $$ = make_str("next"); }
-               | NOCREATEDB                    { $$ = make_str("nocreatedb"); }
-               | NOCREATEUSER                  { $$ = make_str("nocreateuser"); }
-               | NOTHING                       { $$ = make_str("nothing"); }
-               | NOTNULL                       { $$ = make_str("notnull"); }
-               | OF                            { $$ = make_str("of"); }
-               | OIDS                          { $$ = make_str("oids"); }
-               | ONLY                          { $$ = make_str("only"); }
-               | OPERATOR                      { $$ = make_str("operator"); }
-               | OPTION                        { $$ = make_str("option"); }
-               | PASSWORD                      { $$ = make_str("password"); }
-               | PENDANT                       { $$ = make_str("pendant"); }
-               | PRIOR                         { $$ = make_str("prior"); }
-               | PRIVILEGES                    { $$ = make_str("privileges"); }
-               | PROCEDURAL                    { $$ = make_str("procedural"); }
-               | READ                          { $$ = make_str("read"); }
-               | RELATIVE                      { $$ = make_str("relative"); }
-               | RENAME                        { $$ = make_str("rename"); }
-               | RESTRICT                      { $$ = make_str("restrict"); }
-               | RETURNS                       { $$ = make_str("returns"); }
-               | ROW                           { $$ = make_str("row"); }
-               | RULE                          { $$ = make_str("rule"); }
-               | SCROLL                        { $$ = make_str("scroll"); }
-               | SEQUENCE                      { $$ = make_str("sequence"); }
-               | SERIAL                        { $$ = make_str("serial"); }
-               | SERIALIZABLE                  { $$ = make_str("serializable"); }
-               | SHARE                         { $$ = make_str("share"); }
-               | START                         { $$ = make_str("start"); }
-               | STATEMENT                     { $$ = make_str("statement"); }
-               | STDIN                         { $$ = make_str("stdin"); }
-               | STDOUT                        { $$ = make_str("stdout"); }
-               | SYSID                         { $$ = make_str("sysid"); }
-               | TEMP                          { $$ = make_str("temp"); }
-               | TEMPORARY                     { $$ = make_str("temporary"); }
-               | TIME                          { $$ = make_str("time"); }
-               | TIMESTAMP                     { $$ = make_str("timestamp"); }
-               | TIMEZONE_HOUR                 { $$ = make_str("timezone_hour"); }
-                | TIMEZONE_MINUTE               { $$ = make_str("timezone_minute"); }
-               | TRIGGER                       { $$ = make_str("trigger"); }
-               | TRUNCATE                      { $$ = make_str("truncate"); }
-               | TRUSTED                       { $$ = make_str("trusted"); }
-               | TYPE_P                        { $$ = make_str("type"); }
-               | VALID                         { $$ = make_str("valid"); }
-               | VERSION                       { $$ = make_str("version"); }
-               | ZONE                          { $$ = make_str("zone"); }
-               | SQL_AT                        { $$ = make_str("at"); }
-               | SQL_BOOL                      { $$ = make_str("bool"); }
-               | SQL_BREAK                     { $$ = make_str("break"); }
-               | SQL_CALL                      { $$ = make_str("call"); }
-               | SQL_CONNECT                   { $$ = make_str("connect"); }
-               | SQL_CONTINUE                  { $$ = make_str("continue"); }
-               | SQL_COUNT                     { $$ = make_str("count"); }
-               | SQL_DATA                      { $$ = make_str("data"); }
-               | SQL_DATETIME_INTERVAL_CODE    { $$ = make_str("datetime_interval_code"); }
-               | SQL_DATETIME_INTERVAL_PRECISION       { $$ = make_str("datetime_interval_precision"); }
-               | SQL_DEALLOCATE                { $$ = make_str("deallocate"); }
-               | SQL_DISCONNECT                { $$ = make_str("disconnect"); }
-               | SQL_FOUND                     { $$ = make_str("found"); }
-               | SQL_GO                        { $$ = make_str("go"); }
-               | SQL_GOTO                      { $$ = make_str("goto"); }
-               | SQL_IDENTIFIED                { $$ = make_str("identified"); }
-               | SQL_INDICATOR                 { $$ = make_str("indicator"); }
-               | SQL_INT                       { $$ = make_str("int"); }
-               | SQL_KEY_MEMBER                { $$ = make_str("key_member"); }
-               | SQL_LENGTH                    { $$ = make_str("length"); }
-               | SQL_LONG                      { $$ = make_str("long"); }
-               | SQL_NAME                      { $$ = make_str("name"); }
-               | SQL_NULLABLE                  { $$ = make_str("nullable"); }
-               | SQL_OCTET_LENGTH              { $$ = make_str("octet_length"); }
-               | SQL_OFF                       { $$ = make_str("off"); }
-               | SQL_OPEN                      { $$ = make_str("open"); }
-               | SQL_PREPARE                   { $$ = make_str("prepare"); }
-               | SQL_RELEASE                   { $$ = make_str("release"); }
-               | SQL_RETURNED_LENGTH           { $$ = make_str("returned_length"); }
-               | SQL_RETURNED_OCTET_LENGTH     { $$ = make_str("returned_octet_length"); }
-               | SQL_SCALE                     { $$ = make_str("scale"); }
-               | SQL_SECTION                   { $$ = make_str("section"); }
-               | SQL_SHORT                     { $$ = make_str("short"); }
-               | SQL_SIGNED                    { $$ = make_str("signed"); }
-               | SQL_SQLERROR                  { $$ = make_str("sqlerror"); }
-               | SQL_SQLPRINT                  { $$ = make_str("sqlprint"); }
-               | SQL_SQLWARNING                { $$ = make_str("sqlwarning"); }
-               | SQL_STOP                      { $$ = make_str("stop"); }
-               | SQL_STRUCT                    { $$ = make_str("struct"); }
-               | SQL_UNSIGNED                  { $$ = make_str("unsigned"); }
-               | SQL_VAR                       { $$ = make_str("var"); }
-               | SQL_WHENEVER                  { $$ = make_str("whenever"); }
-               ;
+ColId: ECPGColId                       { $$ = $1; }
+       | ECPGTypeName                  { $$ = $1; }
+       ;
+
 /* Column label
  * Allowed labels in "AS" clauses.
  * Include TRUE/FALSE SQL3 reserved words for Postgres backward
@@ -3982,55 +3855,9 @@ ColId:  ident                                    { $$ = $1; }
  *  rather than in ColId if there was a shift/reduce conflict
  *  when used as a full identifier. - thomas 1997-11-06
  */
-ColLabel:  ColId                       { $$ = $1; }
-               | ABORT_TRANS           { $$ = make_str("abort"); }
-               | ANALYZE               { $$ = make_str("analyze"); }
-               | BINARY                { $$ = make_str("binary"); }
-               | CASE                  { $$ = make_str("case"); }
-               | CLUSTER               { $$ = make_str("cluster"); }
-               | COALESCE              { $$ = make_str("coalesce"); }
-               | CONSTRAINT            { $$ = make_str("constraint"); }
-               | COPY                  { $$ = make_str("copy"); }
-               | CURRENT               { $$ = make_str("current"); }
-               | CURRENT_USER          { $$ = make_str("current_user"); }
-               | DEC                   { $$ = make_str("dec"); }
-               | DECIMAL               { $$ = make_str("decimal"); }
-               | DEFERRABLE            { $$ = make_str("deferrable"); }
-               | DO                    { $$ = make_str("do"); }
-               | ELSE                  { $$ = make_str("else"); }
-               | END_TRANS             { $$ = make_str("end"); }
-               | EXPLAIN               { $$ = make_str("explain"); }
-               | EXTEND                { $$ = make_str("extend"); }
-               | FALSE_P               { $$ = make_str("false"); }
-               | FLOAT                 { $$ = make_str("float"); }
-               | FOREIGN               { $$ = make_str("foreign"); }
-               | GLOBAL                { $$ = make_str("global"); }
-               | GROUP                 { $$ = make_str("group"); }
-               | INITIALLY             { $$ = make_str("initially"); }
-               | LISTEN                { $$ = make_str("listen"); }
-               | LOAD                  { $$ = make_str("load"); }
-               | LOCK_P                { $$ = make_str("lock"); }
-               | MOVE                  { $$ = make_str("move"); }
-               | NEW                   { $$ = make_str("new"); }
-               | NONE                  { $$ = make_str("none"); }
-               | NULLIF                { $$ = make_str("nullif"); }
-               | NUMERIC               { $$ = make_str("numeric"); }
-               | ORDER                 { $$ = make_str("order"); }
-               | POSITION              { $$ = make_str("position"); }
-               | PRECISION             { $$ = make_str("precision"); }
-               | RESET                 { $$ = make_str("reset"); }
-               | SESSION_USER          { $$ = make_str("session_user"); }
-               | SETOF                 { $$ = make_str("setof"); }
-               | SHOW                  { $$ = make_str("show"); }
-               | TABLE                 { $$ = make_str("table"); }
-               | THEN                  { $$ = make_str("then"); }
-               | TRANSACTION           { $$ = make_str("transaction"); }
-               | TRUE_P                { $$ = make_str("true"); }
-               | USER                  { $$ = make_str("user"); }
-               | VACUUM                { $$ = make_str("vacuum"); }
-               | VERBOSE               { $$ = make_str("verbose"); }
-               | WHEN                  { $$ = make_str("when"); }
-               ;
+ColLabel:  ECPGLabelTypeName                   { $$ = $1; }
+       | ECPGColLabel                  { $$ = $1; }
+       ;
 
 SpecialRuleRelation:  CURRENT
                                {
@@ -4364,7 +4191,7 @@ type: simple_type
                        $$.type_dimension = -1;
                        $$.type_index = -1;
                }
-       | symbol
+       | ECPGColLabel
                {
                        /* this is for typedef'ed types */
                        struct typedefs *this = get_typedef($1);
@@ -4427,9 +4254,6 @@ s_union: UNION opt_symbol
            $$ = cat2_str(make_str("union"), $2);
        }
 
-opt_symbol: /* empty */        { $$ = EMPTY; }
-       | symbol                { $$ = $1; }
-
 simple_type: unsigned_type             { $$=$1; }
        |       opt_signed signed_type  { $$=$2; }
        ;
@@ -4469,7 +4293,7 @@ variable_list: variable
                $$ = cat_str(3, $1, make_str(","), $3);
        }
 
-variable: opt_pointer symbol opt_array_bounds opt_initializer
+variable: opt_pointer ECPGColLabel opt_array_bounds opt_initializer
                {
                        struct ECPGtype * type;
                         int dimension = $3.index1; /* dimension of array */
@@ -4788,7 +4612,7 @@ ECPGSetConnection:  SET SQL_CONNECTION to_equal connection_object
 /*
  * define a new type for embedded SQL
  */
-ECPGTypedef: TYPE_P symbol IS type opt_type_array_bounds opt_reference
+ECPGTypedef: TYPE_P ECPGColLabel IS type opt_type_array_bounds opt_reference
        {
                /* add entry to list */
                struct typedefs *ptr, *this;
@@ -4880,7 +4704,7 @@ opt_reference: SQL_REFERENCE { $$ = make_str("reference"); }
 /*
  * define the type of one variable for embedded SQL
  */
-ECPGVar: SQL_VAR symbol IS type opt_type_array_bounds opt_reference
+ECPGVar: SQL_VAR ECPGColLabel IS type opt_type_array_bounds opt_reference
        {
                struct variable *p = find_variable($2);
                int dimension = $5.index1;
@@ -4998,110 +4822,204 @@ action : SQL_CONTINUE {
 }
 
 /* some other stuff for ecpg */
-/*
- * no longer used
-ecpg_expr:  c_expr 
-                               {       $$ = $1; }
-               | a_expr TYPECAST Typename
-                               {       $$ = cat_str(3, $1, make_str("::"), $3); }
-               | '-' ecpg_expr %prec UMINUS
-                               {       $$ = cat2_str(make_str("-"), $2); }
-               | '%' ecpg_expr
-                               {       $$ = cat2_str(make_str("%"), $2); }
-               | '^' ecpg_expr
-                               {       $$ = cat2_str(make_str("^"), $2); }
-               | '|' ecpg_expr
-                               {       $$ = cat2_str(make_str("|"), $2); }
-               | ';' a_expr
-                               {       $$ = cat2_str(make_str(";"), $2); }
-               | a_expr '%'
-                               {       $$ = cat2_str($1, make_str("%")); }
-               | a_expr '^'
-                               {       $$ = cat2_str($1, make_str("^")); }
-               | a_expr '|'
-                               {       $$ = cat2_str($1, make_str("|")); }
-               | a_expr '+' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("+"), $3); }
-               | a_expr '-' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("-"), $3); }
-               | a_expr '*' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("*"), $3); }
-               | a_expr '/' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("/"), $3); }
-               | a_expr '%' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("%"), $3); }
-               | a_expr '^' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("^"), $3); }
-               | a_expr '|' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("|"), $3); }
-               | a_expr '<' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("<"), $3); }
-               | a_expr '>' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str(">"), $3); }
-               | a_expr '=' NULL_P
-                                {       $$ = cat2_str($1, make_str("= NULL")); }
-               | NULL_P '=' ecpg_expr
-                                {       $$ = cat2_str(make_str("= NULL"), $3); }
-               | a_expr '=' ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("="), $3); }
-               | a_expr Op ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("="), $3); }
-               | Op ecpg_expr
-                               {       $$ = cat2_str($1, $2); }
-               | a_expr Op
-                               {       $$ = cat2_str($1, $2); }
-               | a_expr AND ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("and"), $3); }
-               | a_expr OR ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("or"), $3); }
-               | NOT ecpg_expr
-                               {       $$ = cat2_str(make_str("not"), $2); }
-               | a_expr LIKE ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("like"), $3); }
-               | a_expr NOT LIKE ecpg_expr
-                               {       $$ = cat_str(3, $1, make_str("not like"), $4); }
-               | a_expr ISNULL
-                               {       $$ = cat2_str($1, make_str("isnull")); }
-               | a_expr IS NULL_P
-                               {       $$ = cat2_str($1, make_str("is null")); }
-               | a_expr NOTNULL
-                               {       $$ = cat2_str($1, make_str("notnull")); }
-               | a_expr IS NOT NULL_P
-                               {       $$ = cat2_str($1, make_str("is not null")); }
-               | a_expr IS TRUE_P
-                               {       $$ = cat2_str($1, make_str("is true")); }
-               | a_expr IS NOT FALSE_P
-                               {       $$ = cat2_str($1, make_str("is not false")); }
-               | a_expr IS FALSE_P
-                               {       $$ = cat2_str($1, make_str("is false")); }
-               | a_expr IS NOT TRUE_P
-                               {       $$ = cat2_str($1, make_str("is not true")); }
-               | a_expr BETWEEN b_expr AND b_expr
-                               {
-                                       $$ = cat_str(5, $1, make_str("between"), $3, make_str("and"), $5); 
-                               }
-               | a_expr NOT BETWEEN b_expr AND b_expr
-                               {
-                                       $$ = cat_str(5, $1, make_str("not between"), $4, make_str("and"), $6); 
-                               }
-               | a_expr IN '(' in_expr ')'
-                               {
-                                       $$ = cat_str(4, $1, make_str(" in ("), $4, make_str(")")); 
-                               }
-               | a_expr NOT IN '(' in_expr ')'
-                               {
-                                       $$ = cat_str(4, $1, make_str(" not in ("), $5, make_str(")")); 
-                               }
-               | a_expr all_Op sub_type '(' SubSelect ')'
-                               {
-                                       $$ = cat_str(4, $1, $2, $3, cat_str(3, make_str("("), $5, make_str(")"))); 
-                               }
-               | row_expr
-                               {       $$ = $1; }
-               | civariableonly
-                               {       $$ = $1; }
+
+/* additional ColId entries */
+ECPGKeywords:  SQL_AT                          { $$ = make_str("at"); }
+               | SQL_BREAK                     { $$ = make_str("break"); }
+               | SQL_CALL                      { $$ = make_str("call"); }
+               | SQL_CONNECT                   { $$ = make_str("connect"); }
+               | SQL_CONTINUE                  { $$ = make_str("continue"); }
+               | SQL_COUNT                     { $$ = make_str("count"); }
+               | SQL_DATA                      { $$ = make_str("data"); }
+               | SQL_DATETIME_INTERVAL_CODE    { $$ = make_str("datetime_interval_code"); }
+               | SQL_DATETIME_INTERVAL_PRECISION       { $$ = make_str("datetime_interval_precision"); }
+               | SQL_DEALLOCATE                { $$ = make_str("deallocate"); }
+               | SQL_DISCONNECT                { $$ = make_str("disconnect"); }
+               | SQL_FOUND                     { $$ = make_str("found"); }
+               | SQL_GO                        { $$ = make_str("go"); }
+               | SQL_GOTO                      { $$ = make_str("goto"); }
+               | SQL_IDENTIFIED                { $$ = make_str("identified"); }
+               | SQL_INDICATOR                 { $$ = make_str("indicator"); }
+               | SQL_KEY_MEMBER                { $$ = make_str("key_member"); }
+               | SQL_LENGTH                    { $$ = make_str("length"); }
+               | SQL_NAME                      { $$ = make_str("name"); }
+               | SQL_NULLABLE                  { $$ = make_str("nullable"); }
+               | SQL_OCTET_LENGTH              { $$ = make_str("octet_length"); }
+               | SQL_OFF                       { $$ = make_str("off"); }
+               | SQL_OPEN                      { $$ = make_str("open"); }
+               | SQL_PREPARE                   { $$ = make_str("prepare"); }
+               | SQL_RELEASE                   { $$ = make_str("release"); }
+               | SQL_RETURNED_LENGTH           { $$ = make_str("returned_length"); }
+               | SQL_RETURNED_OCTET_LENGTH     { $$ = make_str("returned_octet_length"); }
+               | SQL_SCALE                     { $$ = make_str("scale"); }
+               | SQL_SECTION                   { $$ = make_str("section"); }
+               | SQL_SQLERROR                  { $$ = make_str("sqlerror"); }
+               | SQL_SQLPRINT                  { $$ = make_str("sqlprint"); }
+               | SQL_SQLWARNING                { $$ = make_str("sqlwarning"); }
+               | SQL_STOP                      { $$ = make_str("stop"); }
+               | SQL_VAR                       { $$ = make_str("var"); }
+               | SQL_WHENEVER                  { $$ = make_str("whenever"); }
+               ;
+
+ECPGTypeName:    SQL_BOOL              { $$ = make_str("bool"); }
+               | SQL_INT               { $$ = make_str("int"); }
+               | SQL_LONG              { $$ = make_str("long"); }
+               | SQL_SHORT             { $$ = make_str("short"); }
+               | SQL_STRUCT            { $$ = make_str("struct"); }
+               | SQL_SIGNED            { $$ = make_str("signed"); }
+               | SQL_UNSIGNED          { $$ = make_str("unsigned"); }
+               | DOUBLE                { $$ = make_str("double"); }
+
+ECPGLabelTypeName:      FLOAT          { $$ = make_str("float"); }
+                       | ECPGTypeName  { $$ = $1; }
+               ;
+
+opt_symbol:    symbol          { $$ = $1; }
+               | /*EMPTY*/     { $$ = EMPTY; }
+               ;
+
+symbol:                ColLabel        { $$ = $1; }
+
+ECPGColId:  /* to be used instead of ColId */
+        ECPGKeywords                   { $$ = $1; }
+       | ident                         { $$ = $1; }
+       | datetime                      { $$ = $1; }
+       | ABSOLUTE                      { $$ = make_str("absolute"); }
+       | ACCESS                        { $$ = make_str("access"); }
+       | ACTION                        { $$ = make_str("action"); }
+       | AFTER                         { $$ = make_str("after"); }
+       | AGGREGATE                     { $$ = make_str("aggregate"); }
+       | BACKWARD                      { $$ = make_str("backward"); }
+       | BEFORE                        { $$ = make_str("before"); }
+       | CACHE                         { $$ = make_str("cache"); }
+       | COMMENT                       { $$ = make_str("comment"); } 
+       | COMMITTED                     { $$ = make_str("committed"); }
+       | CONSTRAINTS                   { $$ = make_str("constraints"); }
+       | CREATEDB                      { $$ = make_str("createdb"); }
+       | CREATEUSER                    { $$ = make_str("createuser"); }
+       | CYCLE                         { $$ = make_str("cycle"); }
+       | DATABASE                      { $$ = make_str("database"); }
+       | DEFERRED                      { $$ = make_str("deferred"); }
+       | DELIMITERS                    { $$ = make_str("delimiters"); }
+       | EACH                          { $$ = make_str("each"); }
+       | ENCODING                      { $$ = make_str("encoding"); }
+       | EXCLUSIVE                     { $$ = make_str("exclusive"); }
+       | FORWARD                       { $$ = make_str("forward"); }
+       | FUNCTION                      { $$ = make_str("function"); }
+       | HANDLER                       { $$ = make_str("handler"); }
+       | IMMEDIATE                     { $$ = make_str("immediate"); }
+       | INCREMENT                     { $$ = make_str("increment"); }
+       | INDEX                         { $$ = make_str("index"); }
+       | INHERITS                      { $$ = make_str("inherits"); }
+       | INSENSITIVE                   { $$ = make_str("insensitive"); }
+       | INSTEAD                       { $$ = make_str("instead"); }
+       | INTERVAL                      { $$ = make_str("interval"); }
+       | ISNULL                        { $$ = make_str("isnull"); }
+       | ISOLATION                     { $$ = make_str("isolation"); }
+       | KEY                           { $$ = make_str("key"); }
+       | LANGUAGE                      { $$ = make_str("language"); }
+       | LANCOMPILER                   { $$ = make_str("lancompiler"); }
+       | LEVEL                         { $$ = make_str("level"); }
+       | LOCATION                      { $$ = make_str("location"); }
+       | MATCH                         { $$ = make_str("match"); }
+       | MAXVALUE                      { $$ = make_str("maxvalue"); }
+       | MINVALUE                      { $$ = make_str("minvalue"); }
+       | MODE                          { $$ = make_str("mode"); }
+       | NEXT                          { $$ = make_str("next"); }
+       | NOCREATEDB                    { $$ = make_str("nocreatedb"); }
+       | NOCREATEUSER                  { $$ = make_str("nocreateuser"); }
+       | NOTHING                       { $$ = make_str("nothing"); }
+       | NOTNULL                       { $$ = make_str("notnull"); }
+       | OF                            { $$ = make_str("of"); }
+       | OIDS                          { $$ = make_str("oids"); }
+       | ONLY                          { $$ = make_str("only"); }
+       | OPERATOR                      { $$ = make_str("operator"); }
+       | OPTION                        { $$ = make_str("option"); }
+       | PASSWORD                      { $$ = make_str("password"); }
+       | PENDANT                       { $$ = make_str("pendant"); }
+       | PRIOR                         { $$ = make_str("prior"); }
+       | PRIVILEGES                    { $$ = make_str("privileges"); }
+       | PROCEDURAL                    { $$ = make_str("procedural"); }
+       | READ                          { $$ = make_str("read"); }
+       | RELATIVE                      { $$ = make_str("relative"); }
+       | RENAME                        { $$ = make_str("rename"); }
+       | RESTRICT                      { $$ = make_str("restrict"); }
+       | RETURNS                       { $$ = make_str("returns"); }
+       | ROW                           { $$ = make_str("row"); }
+       | RULE                          { $$ = make_str("rule"); }
+       | SCROLL                        { $$ = make_str("scroll"); }
+       | SEQUENCE                      { $$ = make_str("sequence"); }
+       | SERIAL                        { $$ = make_str("serial"); }
+       | SERIALIZABLE                  { $$ = make_str("serializable"); }
+       | SHARE                         { $$ = make_str("share"); }
+       | START                         { $$ = make_str("start"); }
+       | STATEMENT                     { $$ = make_str("statement"); }
+       | STDIN                         { $$ = make_str("stdin"); }
+       | STDOUT                        { $$ = make_str("stdout"); }
+       | SYSID                         { $$ = make_str("sysid"); }
+       | TEMP                          { $$ = make_str("temp"); }
+       | TEMPORARY                     { $$ = make_str("temporary"); }
+       | TIME                          { $$ = make_str("time"); }
+       | TIMESTAMP                     { $$ = make_str("timestamp"); }
+       | TIMEZONE_HOUR                 { $$ = make_str("timezone_hour"); }
+        | TIMEZONE_MINUTE               { $$ = make_str("timezone_minute"); }
+       | TRIGGER                       { $$ = make_str("trigger"); }
+       | TRUNCATE                      { $$ = make_str("truncate"); }
+       | TRUSTED                       { $$ = make_str("trusted"); }
+       | TYPE_P                        { $$ = make_str("type"); }
+       | VALID                         { $$ = make_str("valid"); }
+       | VERSION                       { $$ = make_str("version"); }
+       | ZONE                          { $$ = make_str("zone"); }
+       ;
+
+ECPGColLabel:  ECPGColId               { $$ = $1; }
+               | ABORT_TRANS           { $$ = make_str("abort"); }
+               | ANALYZE               { $$ = make_str("analyze"); }
+               | BINARY                { $$ = make_str("binary"); }
+               | CASE                  { $$ = make_str("case"); }
+               | CLUSTER               { $$ = make_str("cluster"); }
+               | COALESCE              { $$ = make_str("coalesce"); }
+               | CONSTRAINT            { $$ = make_str("constraint"); }
+               | COPY                  { $$ = make_str("copy"); }
+               | CURRENT               { $$ = make_str("current"); }
+               | CURRENT_USER          { $$ = make_str("current_user"); }
+               | DEC                   { $$ = make_str("dec"); }
+               | DECIMAL               { $$ = make_str("decimal"); }
+               | DEFERRABLE            { $$ = make_str("deferrable"); }
+               | DO                    { $$ = make_str("do"); }
+               | ELSE                  { $$ = make_str("else"); }
+               | END_TRANS             { $$ = make_str("end"); }
+               | EXPLAIN               { $$ = make_str("explain"); }
+               | EXTEND                { $$ = make_str("extend"); }
+               | FALSE_P               { $$ = make_str("false"); }
+               | FOREIGN               { $$ = make_str("foreign"); }
+               | GLOBAL                { $$ = make_str("global"); }
+               | GROUP                 { $$ = make_str("group"); }
+               | INITIALLY             { $$ = make_str("initially"); }
+               | LISTEN                { $$ = make_str("listen"); }
+               | LOAD                  { $$ = make_str("load"); }
+               | LOCK_P                { $$ = make_str("lock"); }
+               | MOVE                  { $$ = make_str("move"); }
+               | NEW                   { $$ = make_str("new"); }
+               | NONE                  { $$ = make_str("none"); }
+               | NULLIF                { $$ = make_str("nullif"); }
+               | NUMERIC               { $$ = make_str("numeric"); }
+               | ORDER                 { $$ = make_str("order"); }
+               | POSITION              { $$ = make_str("position"); }
+               | PRECISION             { $$ = make_str("precision"); }
+               | RESET                 { $$ = make_str("reset"); }
+               | SESSION_USER          { $$ = make_str("session_user"); }
+               | SETOF                 { $$ = make_str("setof"); }
+               | SHOW                  { $$ = make_str("show"); }
+               | TABLE                 { $$ = make_str("table"); }
+               | THEN                  { $$ = make_str("then"); }
+               | TRANSACTION           { $$ = make_str("transaction"); }
+               | TRUE_P                { $$ = make_str("true"); }
+               | USER                  { $$ = make_str("user"); }
+               | VACUUM                { $$ = make_str("vacuum"); }
+               | VERBOSE               { $$ = make_str("verbose"); }
+               | WHEN                  { $$ = make_str("when"); }
                ;
-*/
 
 into_list : coutputvariable | into_list ',' coutputvariable;
 
@@ -5130,15 +5048,13 @@ indicator: /* empty */                  { $$ = NULL; }
        | SQL_INDICATOR cvariable       { check_indicator((find_variable($2))->type); $$ = $2; }
        | SQL_INDICATOR name            { check_indicator((find_variable($2))->type); $$ = $2; }
 
-ident: IDENT   { $$ = $1; }
+ident: IDENT           { $$ = $1; }
        | CSTRING       { $$ = make3_str(make_str("\""), $1, make_str("\"")); };
 
 /*
  * C stuff
  */
 
-symbol: ident  { $$ = $1; }
-
 cpp_line: CPP_LINE     { $$ = $1; }
 
 c_stuff: c_anything    { $$ = $1; }
index 8cbb1d3..10b8af6 100644 (file)
@@ -222,8 +222,6 @@ dump_variables(struct arguments * list, int mode)
 
     /* Then the current element and its indicator */
     ECPGdump_a_type(yyout, list->variable->name, list->variable->type,
-/*     (list->indicator->type->typ != ECPGt_NO_INDICATOR) ? list->indicator->name : NULL,
-       (list->indicator->type->typ != ECPGt_NO_INDICATOR) ? list->indicator->type : NULL, NULL, NULL);*/
        list->indicator->name, list->indicator->type, NULL, NULL);
 
     /* Then release the list element. */