]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Create a real prototype function for describe.
authorMichael Meskes <meskes@postgresql.org>
Fri, 30 May 2003 13:22:02 +0000 (13:22 +0000)
committerMichael Meskes <meskes@postgresql.org>
Fri, 30 May 2003 13:22:02 +0000 (13:22 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/ecpglib/descriptor.c
src/interfaces/ecpg/include/ecpglib.h
src/interfaces/ecpg/preproc/output.c
src/interfaces/ecpg/preproc/preproc.y

index a601ee1eb8c3bbef6e163c7fc4d0f22d9f88a3a2..03561b67ca49531be9f8913cdf17e28db71d0bd6 100644 (file)
@@ -1464,6 +1464,10 @@ Fri May 30 10:29:49 CEST 2003
        - Synced parser.
        - Added a dummy rule for EXEC SQL DESCRIBE that throws an error
          message.
+         
+Fri May 30 15:19:39 CEST 2003
+
+       - Implemented prototype describe function.
        - Some minor cleanup/bug fixing.
        - Set ecpg version to 2.12.0.
        - Set ecpg library to 3.4.2.
index cf8ba3435d28986bcc8fa347d04b5b5afb8b1bbe..0a5e5a71957d61c02385b32210dd08e39736264c 100644 (file)
@@ -1,6 +1,6 @@
 /* dynamic SQL support routines
  *
- * $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.1 2003/03/16 10:42:53 meskes Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.2 2003/05/30 13:22:02 meskes Exp $
  */
 
 #include "postgres_fe.h"
@@ -447,3 +447,10 @@ ECPGdescriptor_lvalue(int line, const char *descriptor)
        ECPGraise(line, ECPG_UNKNOWN_DESCRIPTOR, (char *) descriptor);
        return NULL;
 }
+
+bool
+ECPGdescribe(int line, bool input, const char *statement, ...)
+{
+       ECPGlog("ECPGdescribe called on line %d for %s in %s\n", line, (input) ? "input" : "output", statement);
+       return false;
+}
index 195a464dd9177bad98bbe0ba6a177415f1dabb54..679ff1a7638477346e88d74950b6c6d2d1439a3b 100644 (file)
@@ -72,6 +72,8 @@ void          ECPGraise(int line, int code, const char *str);
 bool           ECPGget_desc_header(int, char *, int *);
 bool           ECPGget_desc(int, char *, int,...);
 
+bool           ECPGdescribe(int, bool, const char *, ...);
+
 /* dynamic result allocation */
 void           ECPGfree_auto_mem(void);
 
index 7e626b19716b0c67f60364f13895a3f2433faf1d..57509ea809c15b910bd535206ea39bb7b3e62c23 100644 (file)
@@ -15,7 +15,7 @@ output_simple_statement(char *cmd)
        int                     i,
                                j = strlen(cmd);;
 
-       /* do this char by char as we have to filter '\"' */
+       /* output this char by char as we have to filter '\"' */
        for (i = 0; i < j; i++)
        {
                if (cmd[i] != '"')
@@ -111,7 +111,7 @@ output_statement(char *stmt, int mode, char *con)
 
        fprintf(yyout, "{ ECPGdo(__LINE__, %s, \"", con ? con : "NULL");
 
-       /* do this char by char as we have to filter '\"' */
+       /* output this char by char as we have to filter '\"' */
        for (i = 0; i < j; i++)
        {
                if (stmt[i] != '"')
index cb24adbb5db0d74cb1e2295b819732ac2cc0b161..e58a749b04d37caaed6cac5dc356a17a1cb288b6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.226 2003/05/30 08:39:01 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.227 2003/05/30 13:22:02 meskes Exp $ */
 
 /* Copyright comment */
 %{
@@ -438,18 +438,17 @@ create_questionmarks(char *name, bool array)
 %type  <str>   ECPGFree ECPGDeclare ECPGVar opt_at enum_definition
 %type  <str>   struct_union_type s_struct_union vt_declarations 
 %type  <str>   var_declaration type_declaration single_vt_declaration
-%type  <str>   ECPGSetAutocommit on_off variable_declarations
+%type  <str>   ECPGSetAutocommit on_off variable_declarations ECPGDescribe
 %type  <str>   ECPGAllocateDescr ECPGDeallocateDescr symbol opt_output
 %type  <str>   ECPGGetDescriptorHeader ECPGColLabel single_var_declaration
 %type  <str>   reserved_keyword unreserved_keyword ecpg_interval
 %type  <str>   col_name_keyword func_name_keyword precision opt_scale
 %type  <str>   ECPGTypeName variablelist ECPGColLabelCommon c_variable
-%type  <str>   inf_val_list inf_col_list using_descriptor ECPGDescribe
-%type  <str>   into_descriptor 
+%type  <str>   inf_val_list inf_col_list using_descriptor into_descriptor 
 
 %type  <struct_union> s_struct_union_symbol
 
-%type  <descriptor> ECPGGetDescriptor
+%type  <descriptor> ECPGGetDescriptor 
 
 %type  <type_enum> simple_type signed_type unsigned_type
 
@@ -617,10 +616,12 @@ stmt:  AlterDatabaseSetStmt               { output_statement($1, 0, connection); }
                }
                | ECPGDescribe
                {
-                       if (connection)
-                               mmerror(PARSE_ERROR, ET_ERROR, "no at option for describe statement.\n");
-
-                       fprintf(yyout, "{ /* ECPGdescribe(__LINE__, %s) */;", $1);
+                       fprintf(yyout, "{ ECPGdescribe(__LINE__, %s,", $1);
+                       dump_variables(argsresult, 1);
+                       fputs("ECPGt_EORT);", yyout);
+                       fprintf(yyout, "}");
+                       output_line_number();
+                               
                        /* whenever_action(2); */
                        free($1);
                }
@@ -5186,18 +5187,18 @@ ECPGPrepare: PREPARE name FROM execstring
  */
 ECPGDescribe: SQL_DESCRIBE INPUT_P name using_descriptor 
        { 
-               mmerror(PARSE_ERROR, ET_ERROR, "using unsupported describe statement.\n");
-               $$ = cat_str(3, make_str("input"), $3, $4);
+               mmerror(PARSE_ERROR, ET_WARNING, "using unsupported describe statement.\n");
+               $$ = cat_str(3, make_str("1, ECPGprepared_statement(\""), $3, make_str("\")"));
        }
        | SQL_DESCRIBE opt_output name using_descriptor
        {
-               mmerror(PARSE_ERROR, ET_ERROR, "using unsupported describe statement.\n");
-               $$ = cat_str(3, $2, $3, $4);
+               mmerror(PARSE_ERROR, ET_WARNING, "using unsupported describe statement.\n");
+               $$ = cat_str(3, make_str("0, ECPGprepared_statement(\""), $3, make_str("\")"));
        }
        | SQL_DESCRIBE opt_output name into_descriptor
        {
-               mmerror(PARSE_ERROR, ET_ERROR, "using unsupported describe statement.\n");
-               $$ = cat_str(3, $2, $3, $4);
+               mmerror(PARSE_ERROR, ET_WARNING, "using unsupported describe statement.\n");
+               $$ = cat_str(3, make_str("0, ECPGprepared_statement(\""), $3, make_str("\")"));
        }
        ;