Commit Graph

56 Commits

Author SHA1 Message Date
Tom Lane f945f46193 Modify lexing of multi-char operators per pghackers discussion around
16-Mar-00: trailing + or - is not part of the operator unless the operator
also contains characters not present in SQL92-defined operators.  This
solves the 'X=-Y' problem without unduly constraining users' choice of
operator names --- in particular, no existing Postgres operator names
become invalid.

Also, remove processing of // comments, as agreed in the same thread.
2000-03-18 18:03:12 +00:00
Tom Lane 2b23e86447 Repair typos: <xb> EOF rule should be <xh>, likewise <xq> to <xd> 2000-03-18 05:44:21 +00:00
Michael Meskes 8e0790519a *** empty log message *** 2000-03-15 19:09:10 +00:00
Tom Lane d261adf6db Fix ==-instead-of-= typo that gcc does its level best to point out.
Isn't anybody paying attention to warnings around here?
2000-03-08 22:03:12 +00:00
Michael Meskes 3a81a1a462 *** empty log message *** 2000-03-03 09:56:03 +00:00
Michael Meskes 991b9740ac *** empty log message *** 2000-02-22 19:57:12 +00:00
Michael Meskes b53955f38a *** empty log message *** 2000-01-27 19:01:35 +00:00
Bruce Momjian 5c25d60244 Add:
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc

to all files copyright Regents of Berkeley.  Man, that's a lot of files.
2000-01-26 05:58:53 +00:00
Tom Lane b6fdd14765 ecpg shouldn't depend on parser/gramparse.h. Also, eliminate some
compiler warnings caused by lack of extern declarations in extern.h.
I believe the remaining gcc warnings here would go away if the ecpg
grammar could be tweaked so it doesn't use REJECT ...
2000-01-20 05:23:26 +00:00
Bruce Momjian b57b0e0445 The first fix is to allow an input file with a relative path and without
a ".pgc " extension. The second patch fixes a coredump when there is
more than one input file (in that case, cur and types were not set to
NULL before processing the second f ile)

The patch below modifies the accepted grammar of ecpg to accept

 FETCH [direction] [amount] cursor name

i.e. the IN|FROM clause becomes optional (as in Oracle and Informix).
This removes the incompatibility mentioned in section "Porting From
Other RDBMS Packages" p169, PostgreSQL Programmer's Guide. The grammar
is modified in such a way as to avoid shift/reduce conflicts. It does
not accept the statement "EXEC SQL FETCH;" anymore, as the old grammar
did (this seems to be a bug of the old grammar anyway).

This patch cleans up the handling of space characters in the scanner;
some patte rns require \n to be in {space}, some do not. A second fix is
the handling of cpp continuati on lines; the old pattern did not match
these. The parser is patched to fix an off-by-one error in the #line
directives. The pa rser is also enhanced to report the correct location
of errors in declarations in the "E XEC SQL DECLARE SECTION". Finally,
some right recursions in the parser were replaced by  left-recursions.


This patch adds preprocessor directives to ecpg; in particular

EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF and EXEC SQL ENDIF

"EXEC SQL IFDEF" is used with defines made with "EXEC SQL DEFINE" and
defines, specified on the command line with -D. Defines, specified on
the command line are persistent across multiple input files. Defines can
be nested up to a maximum level of 128 (see patch). There is a fair
amount of error checking to make sure directives are matched properly. I
need preprocessor directives for porting code, that is written for an
Informix database, to a PostgreSQL database, while maintaining
compatibility with the original code. I decided not to extend the
already large ecpg grammar. Everything is done in the scanner by adding
some states, e.g. to skip all input except newlines and directives. The
preprocessor commands are compatible with Informix. Oracle uses a cpp
replacement.

Rene Hogendoorn
1999-12-21 17:42:16 +00:00
Tom Lane 51f62d505e Standardize on MAXPGPATH as the size of a file pathname buffer,
eliminating some wildly inconsistent coding in various parts of the
system.  I set MAXPGPATH = 1024 in config.h.in.  If anyone is really
convinced that there ought to be a configure-time test to set the
value, go right ahead ... but I think it's a waste of time.
1999-10-25 03:08:03 +00:00
Tom Lane 45c002460c Remove fixed-size literal buffer from ecpg's lexer (same
fix recently applied to backend's lexer).  I see that YY_USES_REJECT
still gets defined for this lexer, which means it's going to have trouble
parsing really long tokens.  Not sure if it's worth doing anything about
that or not; I don't have the interest right now to understand why
ecpg's additions to the syntax cause this problem...
1999-10-22 23:14:50 +00:00
Michael Meskes 6fb3c3f78f *** empty log message *** 1999-10-15 19:02:08 +00:00
Michael Meskes a4f59da146 *** empty log message *** 1999-10-08 11:05:05 +00:00
Michael Meskes 68ee58ed43 *** empty log message *** 1999-09-17 09:48:25 +00:00
Michael Meskes 864e1e9d0e *** empty log message *** 1999-09-15 08:29:25 +00:00
Tom Lane b65ab31910 Eliminate token length assumption in scanstr(). 1999-09-11 22:26:47 +00:00
Michael Meskes 9f0ffa2241 *** empty log message *** 1999-07-19 12:37:48 +00:00
Bruce Momjian 3406901a29 Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
Michael Meskes 9b0e20574b *** empty log message *** 1999-06-29 09:25:25 +00:00
Michael Meskes d12561040c *** empty log message *** 1999-06-24 13:15:31 +00:00
Michael Meskes 70dfc8c11e *** empty log message *** 1999-06-10 19:11:33 +00:00
Bruce Momjian 210055ad61 here are some patches for 6.5.0 which I already submitted but have never
been applied. The patches are in the .tar.gz attachment at the end:

varchar-array.patch     this patch adds support for arrays of bpchar() and
                        varchar(), which where always missing from postgres.

                        These datatypes can be used to replace the _char4,
                        _char8, etc., which were dropped some time ago.

block-size.patch        this patch fixes many errors in the parser and other
                        program which happen with very large query statements
                        (> 8K) when using a page size larger than 8192.

                        This patch is needed if you want to submit queries
                        larger than 8K. Postgres supports tuples up to 32K
                        but you can't insert them because you can't submit
                        queries larger than 8K. My patch fixes this problem.

                        The patch also replaces all the occurrences of `8192'
                        and `1<<13' in the sources with the proper constants
                        defined in include files. You should now never find
                        8192 hardwired in C code, just to make code clearer.


--
Massimo Dal Zotto
1999-05-03 19:10:48 +00:00
Michael Meskes dd6b1aaa25 *** empty log message *** 1999-04-26 05:28:48 +00:00
Michael Meskes ad5a54d170 *** empty log message *** 1999-04-16 12:26:49 +00:00
Michael Meskes df6e504437 *** empty log message *** 1999-04-13 12:36:38 +00:00
Michael Meskes d471f8073a *** empty log message *** 1999-03-24 20:05:15 +00:00
Michael Meskes e4274d60a5 *** empty log message *** 1999-03-20 19:46:54 +00:00
Marc G. Fournier fa9db42a6e From: Michael Meskes <Michael_Meskes@topmail.de>
+
+ Son Feb 21 14:10:47 CET 1999
+
+       - Fixed variable detection in libecpg.
+
+ Mon Feb 22 19:47:45 CET 1999
+
+       - Added 'at <db_connection>' option to all commands it is apllicable
+         to. Due to changing the API of some libecpg functions this
+         requires me to increase the major version number.
+       - Synced pgc.l with scan.l.
+       - Added support for unions.
+       - Set library version to 3.0.0
+       - Set ecpg version to 3.0.0
1999-02-23 12:57:03 +00:00
Marc G. Fournier bf6636baa6 From: Michael Meskes <Michael_Meskes@topmail.de>
See Changes file...
1999-02-20 07:01:08 +00:00
Marc G. Fournier 91fed81c77 From: Michael Meskes <Michael.Meskes@usa.net>
+
+ Wed Jan 27 12:42:22 CET 1999
+
+       - Fixed bug that caused ecpg to lose 'goto' information.
+       - Set ecpg version to 2.4.7
+
+ Fri Jan 29 18:03:52 CET 1999
+
+       - Fixed bug that caused 'enum' to be rejected in pure C code.
+       - Fixed bug that caused function names to be translated to lower case.
+       - Set ecpg version to 2.4.8
+
1999-01-31 19:56:28 +00:00
Thomas G. Lockhart 607cd930d5 Changes from Michael Meskes:
Check strdup calls for out of memory.
Set library version to 2.6.2
Synced preproc.y and keywords.c with gram.y and keywords.c yet again.
Set version to 2.4.3
1998-10-03 02:33:51 +00:00
Marc G. Fournier bf395e895b From: Michael Meskes <meskes@usa.net>
+ Mon Aug 31 09:40:04 CEST 1998
+
+       - Minor patch to Makefile
+       - Put pgc.l in sync with scan.l
+
+ Tue Sep  1 11:31:05 CEST 1998
+
+       - Fixed another bug in preproc.y
+
+ Thu Sep  3 12:21:16 CEST 1998
+
+       - Sync preproc.y with gram.y
+
+ Mon Sep 14 09:21:02 CEST 1998
+
+       - Sync preproc.y with gram.y yet again
+
+ Thu Sep 17 08:55:33 CEST 1998
+
+       - Synced preproc.y and gram.y one more time
+
+ Thu Sep 17 19:23:24 CEST 1998
+
+       - Added missing ´;´ in preproc.y
+       - Set version to 2.4.2
1998-09-21 05:52:55 +00:00
Bruce Momjian af74855a60 Renaming cleanup, no pgindent yet. 1998-09-01 03:29:17 +00:00
Marc G. Fournier 35478b8028 From: Michael Meskes <meskes@online-club.de>
+
+ Fri Aug 14 12:44:21 CEST 1998
+
+       - Added EXEC SQL DEFINE statement
+       - Set version to 2.4.0
+
+ Tue Aug 18 09:24:15 CEST 1998
+
+       - Removed keyword IS from DEFINE statement
+       - Added latest changes from gram.y
+       - Removed duplicate symbols from preproc.y
+       - Initialize sqlca structure
+       - Added check for connection to ecpglib
+       - Set version to 2.4.1
+
+ Thu Aug 20 15:31:29 CEST 1998
+
+       - Cleaned up memory allocation in ecpglib.c
+       - Set library version to 2.6
+
1998-08-25 12:17:27 +00:00
Marc G. Fournier 186aeb1d67 From: Dr. Michael Meskes <meskes@online-club.de>
So this should finally get cursors working. There was an ugly bug in it.
1998-08-05 04:47:54 +00:00
Marc G. Fournier c31a80faf0 From: Michael Meskes <meskes@topsystem.de>
+Wed May 20 10:46:48 CEST 1998
+
+       - Fixed handling of preprocessor directives and variable
+         initialization.
+       - Added enum datatype.
        - Set version to 2.3.2
1998-05-26 13:43:55 +00:00
Marc G. Fournier a45341979f From: Michael Meskes <meskes@topsystem.de>
+ Tue May 19 11:49:34 CEST 1998
+
+       - Tested (and fixed) 'set connection'
+       - Fixed string notation in C
+       - Set version to 2.3.2
1998-05-21 03:52:37 +00:00
Marc G. Fournier ef567413d2 From: Michael Meskes <meskes@topsystem.de>
+
+ Wed May  6 16:09:45 CEST 1998
+
+       - Some more cleanups in the library.
+
+ Thu May  7 12:34:28 CEST 1998
+
+       - Made CONNECT and DISCONNECT statement more SQL3 compliant.
+       - Changed the API for the ECPGconnect function to be able to handle
+         hostnames and ports
+
+ Fri May  8 13:54:45 CEST 1998
+       - More changes to the parser. The connect statement now allows
+         ORACLE style logins.
+       - db-name is accepted in two ways:
+               - <dbname>[@<server>][:<port>]
+               - esql:postgresql://<server>[:<port>][/<dbname>]
+
+ Mon May 11 10:28:37 CEST 1998
+
+       - Added '? options' to connect call.
+       - Also allow USING as keyword for the password
+
+ Thu May 14 15:09:58 CEST 1998
+
+       - Changed preproc.y and pgc.l according to the parser changes in the
+         backend.
+
+ Fri May 15 09:55:21 CEST 1998
+
+       - Added connection_name handling
+
+
+ Mon May 18 10:33:58 CEST 1998
+
+       - Fixed some more bugs
+       - Set version to 2.3.1
+       - Set library version to 2.2
1998-05-18 16:05:05 +00:00
Marc G. Fournier 6bccf64d7b From: Michael Meskes <meskes@topsystem.de>
Tue Apr 28 14:48:41 CEST 1998

      - Put operator "->" back into parser. Note that :foo->bar means the
        C term, but :foo ->bar means the operator "->".

Tue Apr 28 15:49:07 CEST 1998

      - Added exec sql disconnect command.
      - Allow varchar in C to be written in uppercase too.
      - Added whenever option "do break;"

Wed Apr 29 09:17:53 CEST 1998

      - Corrected parsing of C comments.
      - Also allow C++ style comments.
      - Make sure not found is only checked after commands that could
          return it.
      - Added error codes, see ecpgerror.h for details.
      - Added "exec sql <TransactionStmt> release" as disconnect statement
        for compatibility issues.

Thu Apr 30 10:42:10 CEST 1998

      - Added a -t option to disable automatic transaction start.
      - Added sqlerrd[] to sqlca struct.
      - Give back number of tuples affect in sqlca.sqlerrd[2].

Thu Apr 30 13:36:02 CEST 1998

      - Make the return code different in case of different errors.

Wed May  6 11:42:48 CEST 1998

      - Free memory if possible
      - Some bugfixes for bugs I found while changing the memory
          allocation code
      - Now able to fill complete array with one call (see test1.pgc for
          an example)
      - Set version to 2.3.0
      - Set library version to 2.1
1998-05-06 13:03:47 +00:00
Marc G. Fournier 718430ea40 From: Michael Meskes <meskes@topsystem.de>
And the next update. Now you can use only parts of a struct like this:

exec sql select a into :struct.string from foo;
1998-04-27 14:35:58 +00:00
Bruce Momjian 1efd2cf7b0 Included is a patch for ecpg which seems to have some compiling
problems on non POSIX systems such as SunOS 4.1.x.  -- Tatsuo Ishii
t-ishii@sra.co.jp -
1998-04-26 23:14:39 +00:00
Marc G. Fournier 7500a961f1 From: Michael Meskes <meskes@topsystem.de>
+ Thu Apr 23 09:27:16 CEST 1998
+
+       - Also allow call in whenever statement with the same functionality
+         as do.
+
+ Thu Apr 23 12:29:28 CEST 1998
+
+       - Also rewrote variable declaration part. It is now possible to
+         declare more than one variable per line.
+       - Set version to 2.1.0
+
+ Fri Apr 24 13:50:15 CEST 1998
+
+       - Fixed some bugs.
+       - Set version to 2.1.1
1998-04-24 12:10:20 +00:00
Marc G. Fournier 64e35e1468 Upgrade ECPG to 2.0
Michael Meskes <meskes@topsystem.de>
1998-04-21 13:23:24 +00:00
Marc G. Fournier 62943bb76f Pointed out by: Doug Winterburn <dlw@seavme.xroads.com>
3) Add "#include "config.h" to src/interfaces/ecpg/preproc/pgc.l
   to correct "strings.h not found".  config.h has the proper define to
   make this work and should probably be near the top of pgc.l before
   the first include.
1998-03-31 03:00:20 +00:00
Bruce Momjian 80f7c41388 Here's my next patch to bring ecpg to version 1.1. It now correctly
handles all transaction commands and the exec sql include command.

Michael Meskes
1998-03-20 03:08:11 +00:00
Marc G. Fournier 96ac738269 From: Michael Meskes <meskes@topsystem.de>
No more shift/reduce conflicts. Also all other bugs I know about are fixed.
1998-02-27 12:59:33 +00:00
Marc G. Fournier c37be81cdf Add <sys/types.h> for SunOS
From: t-ishii@sra.co.jp
1998-02-27 03:07:35 +00:00
Marc G. Fournier 50e4120d5e From: Michael Meskes <meskes@topsystem.de>
Sorry, I just repeated the last call and send out a stupid should be empty
mail. Anyway, my last patch missed one change:
1998-02-27 02:34:33 +00:00
Marc G. Fournier f139617b55 From: Michael Meskes <meskes@topsystem.de>
Subject: [PATCHES] ecpg: correct whenever statement
1998-02-27 02:31:20 +00:00