Commit Graph

3119 Commits

Author SHA1 Message Date
Michael Meskes 492059daba Move from strcmp to strncmp to be more tolerant for changes to the parser. 2008-11-01 19:53:35 +00:00
Michael Meskes ef9ed9b6aa Use string component in index structure. 2008-11-01 12:42:14 +00:00
Michael Meskes e6c7f7c1ad Do not eat memory even in case of an out-of-memory error. 2008-11-01 08:55:21 +00:00
Peter Eisentraut 06735e3256 Unicode escapes in strings and identifiers 2008-10-29 08:04:54 +00:00
Peter Eisentraut 8ecd535169 Add WITH [NO] DATA clause to CREATE TABLE AS, per SQL.
Also, since WITH is now a reserved word, simplify the token merging code to
only deal with WITH_TIME.

by Tom Lane and myself
2008-10-28 14:09:45 +00:00
Magnus Hagander 53a5026b5c Remove support for (insecure) crypt authentication.
This breaks compatibility with pre-7.2 versions.
2008-10-28 12:10:44 +00:00
Magnus Hagander f3a0688ace Add support for multiple error messages from libpq, by simply appending them
after each other (since we already add a newline on each, this makes them
multiline).

Previously a new error would just overwrite the old one, so for example any
error caused when trying to connect with SSL enabled would be overwritten
by the error message form the non-SSL connection when using sslmode=prefer.
2008-10-27 09:42:31 +00:00
Peter Eisentraut 0fec77ae88 SQL:2008 syntax CURRENT_CATALOG, CURRENT_SCHEMA, SET CATALOG, SET SCHEMA. 2008-10-27 09:37:47 +00:00
Magnus Hagander b1eeeb20d9 Update standalong libpq makefiles for msvc and bcc to work with the new
libpq events code.

Hiroshi Saito
2008-10-27 09:10:04 +00:00
Magnus Hagander bb8c822dbf Remove notes from the frontend SSL source that are incorrect or
end-user documentation that lives in the actual documentation.
2008-10-24 12:29:11 +00:00
Magnus Hagander 501e58ba4e Fix memory leak when using gsslib parameter in libpq connections 2008-10-23 16:17:19 +00:00
Peter Eisentraut 831abae506 Clean regression.out 2008-10-21 10:51:24 +00:00
Peter Eisentraut 1471e3843d Allow SQL:2008 syntax ALTER TABLE ... ALTER COLUMN ... SET DATA TYPE
alongside our traditional syntax.
2008-10-21 08:38:16 +00:00
Michael Meskes f346a232ed Fixed parsing of parameters. Added regression test for this. 2008-10-14 09:31:05 +00:00
Michael Meskes 9d3275e59d Fixed "create role" parsing to accept optional "with" argument. 2008-10-10 12:17:18 +00:00
Michael Meskes 059349be0c Synced parser. 2008-10-07 12:43:55 +00:00
Tom Lane 44d5be0e53 Implement SQL-standard WITH clauses, including WITH RECURSIVE.
There are some unimplemented aspects: recursive queries must use UNION ALL
(should allow UNION too), and we don't have SEARCH or CYCLE clauses.
These might or might not get done for 8.4, but even without them it's a
pretty useful feature.

There are also a couple of small loose ends and definitional quibbles,
which I'll send a memo about to pgsql-hackers shortly.  But let's land
the patch now so we can get on with other development.

Yoshiyuki Asaba, with lots of help from Tatsuo Ishii and Tom Lane
2008-10-04 21:56:55 +00:00
Magnus Hagander 233f135144 Link libpq with libgssapi if configure finds it, as
required by at least NetBSD.

Markus Schaaf
2008-10-01 15:35:32 +00:00
Heikki Linnakangas 61d9674988 Make LC_COLLATE and LC_CTYPE database-level settings. Collation and
ctype are now more like encoding, stored in new datcollate and datctype
columns in pg_database.

This is a stripped-down version of Radek Strnad's patch, with further
changes by me.
2008-09-23 09:20:39 +00:00
Tom Lane c52aab5525 Get rid of pgpass_from_client tracking inside libpq --- given the conclusion
that presence of the password in the conninfo string must be checked *before*
risking a connection attempt, there is no point in checking it afterwards.
This makes the specification of PQconnectionUsedPassword() a bit simpler
and perhaps more generally useful, too.
2008-09-22 14:21:44 +00:00
Tom Lane cae7ad906a Fix dblink_connect() so that it verifies that a password is supplied in the
conninfo string *before* trying to connect to the remote server, not after.
As pointed out by Marko Kreen, in certain not-very-plausible situations
this could result in sending a password from the postgres user's .pgpass file,
or other places that non-superusers shouldn't have access to, to an
untrustworthy remote server.  The cleanest fix seems to be to expose libpq's
conninfo-string-parsing code so that dblink can check for a password option
without duplicating the parsing logic.

Joe Conway, with a little cleanup by Tom Lane
2008-09-22 13:55:14 +00:00
Tom Lane 3290e6180f Add a PQfireResultCreateEvents function to allow applications to mimic the
sequence of operations that libpq goes through while creating a PGresult.
Also, remove ill-considered "const" decoration on parameters passed to
event procedures.
2008-09-19 20:06:13 +00:00
Tom Lane e2b7d0c65c Improve the recently-added libpq events code to provide more consistent
guarantees about whether event procedures will receive DESTROY events.
They no longer need to defend themselves against getting a DESTROY
without a successful prior CREATE.

Andrew Chernow
2008-09-19 16:40:40 +00:00
Peter Eisentraut 90d910866e Add additional rules so that make init-po for ecpg gets up to date flex and
bison output.  Without these, make can sometimes be tempted to invoke its
built-in rules using lex and yacc, which can fail if those commands are not
available.

This was a main cause for the NLS web site breakage.
2008-09-19 13:08:08 +00:00
Tom Lane 32f159cc55 Add an "events" system to libpq, whereby applications can get callbacks that
enable them to manage private data associated with PGconns and PGresults.

Andrew Chernow and Merlin Moncure
2008-09-17 04:31:08 +00:00
Tom Lane bacf7b2086 Avoid using sprintf() for a simple octal conversion in PQescapeByteaInternal.
Improves performance, per suggestion from Rudolf Leitgeb (bug #4414).
The backend did this right already, but not libpq.
2008-09-10 17:01:07 +00:00
Tom Lane 76c39cf3be Sigh, I missed checking the ecpg tests ... 2008-09-01 21:42:18 +00:00
Peter Eisentraut 7c31742a07 Remove all traces that suggest that a non-Bison yacc might be supported, and
change build system to use only Bison.  Simplify build rules, make file names
uniform.  Don't build the token table header file where it is not needed.
2008-08-29 13:02:33 +00:00
Michael Meskes 0ba9b565b9 Synced parser. 2008-08-20 14:09:16 +00:00
Magnus Hagander c91ff03a06 Make libpq on windows not try to send chunks larger than 64Kb.
Per Microsoft knowledge base article Q201213, early versions of
Windows fail when we do this. Later versions of Windows appear
to have a higher limit than 64Kb, but do still fail on large
sends, so we unconditionally limit it for all versions.

Patch from Tom Lane.
2008-08-20 11:53:45 +00:00
Michael Meskes ef0dcf0e5b Fixed incorrect argument handling in SET command if argument is a variable. 2008-08-19 10:40:32 +00:00
Bruce Momjian 1883b988d5 Synchronize Borland libpq makefile to match MSVC. Backpatch to 8.3.X. 2008-08-16 01:56:20 +00:00
Alvaro Herrera d557f5c00c Add MSVC++ debug libraries to .cvsignore. 2008-07-17 21:16:23 +00:00
Tom Lane d89737d31c Support "variadic" functions, which can accept a variable number of arguments
so long as all the trailing arguments are of the same (non-array) type.
The function receives them as a single array argument (which is why they
have to all be the same type).

It might be useful to extend this facility to aggregates, but this patch
doesn't do that.

This patch imposes a noticeable slowdown on function lookup --- a follow-on
patch will fix that by adding a redundant column to pg_proc.

Pavel Stehule
2008-07-16 01:30:23 +00:00
Magnus Hagander f6c1dece9a Fix standalone libpq build on win32.
Hiroshi Saito
2008-06-27 18:58:14 +00:00
Michael Meskes 13c843d085 Synced parser 2008-06-26 08:04:05 +00:00
Bruce Momjian 2296e29998 Add libpq comment about how to determine the format used for passing
binary values.

Add comments to libpq C function for parameter passing.
2008-06-23 21:10:49 +00:00
Michael Meskes c8e0d68aa5 Added lost sysmbol SQL_SQL to list of allowed variable names. 2008-06-04 12:23:34 +00:00
Tom Lane 02ac305405 Tweak libpq to avoid crashing due to incorrect buffer size calculation when
we are on a 64-bit machine (ie, size_t is wider than int) and someone passes
in a query string that approaches or exceeds INT_MAX bytes.  Also, just for
paranoia's sake, guard against similar overflows in sizing the input buffer.

The backend will not in the foreseeable future be prepared to send or receive
strings exceeding 1GB, so I didn't take the more invasive step of switching
all the buffer index variables from int to size_t; though someday we might
want to do that.

I have a suspicion that this is not the only such bug in libpq, but this
fix is enough to take care of the crash reported by Francisco Reyes.
2008-05-29 22:02:44 +00:00
Michael Meskes d82e7c84fa Link in keywords file instead of copying it.
Use #define/#ifdef instead of sed to fix include files, this should work on Windows too.
2008-05-21 19:51:01 +00:00
Magnus Hagander 206378e4ab Use CRITICAL_SECTION instead of Mutexes for thread-locking in libpq on
Windows, for better performance.

Per suggestion from Andrew Chernow, but not his patch since the underlying
code was changed to deal with return values.
2008-05-21 14:20:48 +00:00
Michael Meskes 763c4866a2 ecpg_keywords.o also depends on preproc.h 2008-05-21 00:26:26 +00:00
Michael Meskes f7563e9710 Synced parser.
Made ecpg parser use backend provided keyword list.
Changed whenever test so exit value is 0.
2008-05-20 23:17:32 +00:00
Tom Lane d4b9f44bf9 okay, looks like ecpg/compatlib needs -lintl too.
Per buildfarm results.
2008-05-18 03:24:17 +00:00
Bruce Momjian 265f19d78b Use isatty() test for pager on Win32; not sure why it was disabled for
that platform.
2008-05-17 23:34:44 +00:00
Tom Lane 5248e02b50 ecpglib needs to link with libintl if it's in use.
Per buildfarm results.
2008-05-17 20:23:40 +00:00
Andrew Dunstan e72c98b058 fix ecpg regression tests broken by over-eager adding of $PostgreSQL$ markers 2008-05-17 02:43:16 +00:00
Andrew Dunstan 53972b460c Add $PostgreSQL$ markers to a lot of files that were missing them.
This particular batch was just for *.c and *.h file.

The changes were made with the following 2 commands:

find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \) -prune \) -o  \( -name '*.[ch]'  \) \( -exec grep -q '\$PostgreSQL' {} \; -o -print \) | while read file ; do head -n 1 < $file | grep -q '^/\*' && echo $file; done | xargs -l sed -i -e '1s/^\// /' -e '1i/*\n * $PostgreSQL:$ \n *'

find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \) -prune \) -o  \( -name '*.[ch]'  \) \( -exec grep -q '\$PostgreSQL' {} \; -o -print \) | xargs -l sed -i -e '1i/*\n * $PostgreSQL:$ \n */'
2008-05-17 01:28:26 +00:00
Magnus Hagander 1d89026788 Implement error checking for pthreads calls in thread-safe mode. They really
should always succeed, but in the likely event of a failure we would
previously fall through *without locking* - the new code will exit(1).

Printing the error message on stderr will not work for all applications, but
it's better than nothing at all - and our API doesn't provide a way to return
the error to the caller.
2008-05-16 18:30:53 +00:00
Peter Eisentraut e1bdd07c3c Add localization support to ecpg.
Author: Euler Taveira de Oliveira <euler@timbira.com>
2008-05-16 15:20:04 +00:00