aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces
Commit message (Collapse)AuthorAge
* This patch fixes a few minor problems with libpq++: remove the deprecatedBruce Momjian2002-06-15
| | | | | | | | | | | PQExec(" ") in the wrapper around PQnotifies(), fix the Makefile for the examples so that they will actually compile properly (with the exception of #5, which depends on internal headers), make a minor change to libpq++.h so that "make examples" now works on my machine, update some documentation, fix some grammatical problems, and remove some of the more hideous comments. Neil Conway
* Add LOCALTIME and LOCALTIMESTAMP functions per SQL99 standard.Thomas G. Lockhart2002-06-15
| | | | | | | | | | | Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard. Update the ODBC driver to ensure compatibility with the ODBC standard for these functions (e.g. CURRENT_TIMESTAMP, CURRENT_USER, etc). Include a new appendix in the User's Guide which lists the labeled features for SQL99 (the labeled features replaced the "basic", "intermediate", and "advanced" categories from SQL92). features.sgml does not yet split this list into "supported" and "unsupported" lists.
* added empty result set testingDave Cramer2002-06-14
|
* added empty result set testingDave Cramer2002-06-14
|
* Yet another SSL patch. :-) This one adds some informational messagesBruce Momjian2002-06-14
| | | | | | | | | | | on the server, if DebugLvl >= 2. The patch also includes a late addition to the last patch (X509_check_private_key()). I'm not sure why it the currect revision wasn't tagged. Bear Giles
* SSL patch that adds support for optional client certificates.Bruce Momjian2002-06-14
| | | | | | | | | | | | | | | If the user has certificates in $HOME/.postgresql/postgresql.crt and $HOME/.postgresql/postgresql.key exist, they are provided to the server. The certificate used to sign this cert must be known to the server, in $DataDir/root.crt. If successful, the cert's "common name" is logged. Client certs are not used for authentication, but they could be via the port->peer (X509 *), port->peer_dn (char *) or port->peer_cn (char *) fields. Or any other function could be used, e.g., many sites like the issuer + serial number hash. Bear Giles
* SSL support for ephemeral DH keys.Bruce Momjian2002-06-14
| | | | | | | | | | | | As the comment headers in be-secure.c discusses, EPH preserves confidentiality even if the static private key (which is usually kept unencrypted) is compromised. Because of the value of this, common default values are hard-coded to protect the confidentiality of the data even if an attacker successfully deletes or modifies the external file. Bear Giles
* UPDATED PATCH:Bruce Momjian2002-06-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Attached are a revised set of SSL patches. Many of these patches are motivated by security concerns, it's not just bug fixes. The key differences (from stock 7.2.1) are: *) almost all code that directly uses the OpenSSL library is in two new files, src/interfaces/libpq/fe-ssl.c src/backend/postmaster/be-ssl.c in the long run, it would be nice to merge these two files. *) the legacy code to read and write network data have been encapsulated into read_SSL() and write_SSL(). These functions should probably be renamed - they handle both SSL and non-SSL cases. the remaining code should eliminate the problems identified earlier, albeit not very cleanly. *) both front- and back-ends will send a SSL shutdown via the new close_SSL() function. This is necessary for sessions to work properly. (Sessions are not yet fully supported, but by cleanly closing the SSL connection instead of just sending a TCP FIN packet other SSL tools will be much happier.) *) The client certificate and key are now expected in a subdirectory of the user's home directory. Specifically, - the directory .postgresql must be owned by the user, and allow no access by 'group' or 'other.' - the file .postgresql/postgresql.crt must be a regular file owned by the user. - the file .postgresql/postgresql.key must be a regular file owned by the user, and allow no access by 'group' or 'other'. At the current time encrypted private keys are not supported. There should also be a way to support multiple client certs/keys. *) the front-end performs minimal validation of the back-end cert. Self-signed certs are permitted, but the common name *must* match the hostname used by the front-end. (The cert itself should always use a fully qualified domain name (FDQN) in its common name field.) This means that psql -h eris db will fail, but psql -h eris.example.com db will succeed. At the current time this must be an exact match; future patches may support any FQDN that resolves to the address returned by getpeername(2). Another common "problem" is expiring certs. For now, it may be a good idea to use a very-long-lived self-signed cert. As a compile-time option, the front-end can specify a file containing valid root certificates, but it is not yet required. *) the back-end performs minimal validation of the client cert. It allows self-signed certs. It checks for expiration. It supports a compile-time option specifying a file containing valid root certificates. *) both front- and back-ends default to TLSv1, not SSLv3/SSLv2. *) both front- and back-ends support DSA keys. DSA keys are moderately more expensive on startup, but many people consider them preferable than RSA keys. (E.g., SSH2 prefers DSA keys.) *) if /dev/urandom exists, both client and server will read 16k of randomization data from it. *) the server can read empheral DH parameters from the files $DataDir/dh512.pem $DataDir/dh1024.pem $DataDir/dh2048.pem $DataDir/dh4096.pem if none are provided, the server will default to hardcoded parameter files provided by the OpenSSL project. Remaining tasks: *) the select() clauses need to be revisited - the SSL abstraction layer may need to absorb more of the current code to avoid rare deadlock conditions. This also touches on a true solution to the pg_eof() problem. *) the SIGPIPE signal handler may need to be revisited. *) support encrypted private keys. *) sessions are not yet fully supported. (SSL sessions can span multiple "connections," and allow the client and server to avoid costly renegotiations.) *) makecert - a script that creates back-end certs. *) pgkeygen - a tool that creates front-end certs. *) the whole protocol issue, SASL, etc. *) certs are fully validated - valid root certs must be available. This is a hassle, but it means that you *can* trust the identity of the server. *) the client library can handle hardcoded root certificates, to avoid the need to copy these files. *) host name of server cert must resolve to IP address, or be a recognized alias. This is more liberal than the previous iteration. *) the number of bytes transferred is tracked, and the session key is periodically renegotiated. *) basic cert generation scripts (mkcert.sh, pgkeygen.sh). The configuration files have reasonable defaults for each type of use. Bear Giles
* Back out SSL changes. Newer patch available.Bruce Momjian2002-06-14
|
* Attached are a revised set of SSL patches. Many of these patchesBruce Momjian2002-06-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | are motivated by security concerns, it's not just bug fixes. The key differences (from stock 7.2.1) are: *) almost all code that directly uses the OpenSSL library is in two new files, src/interfaces/libpq/fe-ssl.c src/backend/postmaster/be-ssl.c in the long run, it would be nice to merge these two files. *) the legacy code to read and write network data have been encapsulated into read_SSL() and write_SSL(). These functions should probably be renamed - they handle both SSL and non-SSL cases. the remaining code should eliminate the problems identified earlier, albeit not very cleanly. *) both front- and back-ends will send a SSL shutdown via the new close_SSL() function. This is necessary for sessions to work properly. (Sessions are not yet fully supported, but by cleanly closing the SSL connection instead of just sending a TCP FIN packet other SSL tools will be much happier.) *) The client certificate and key are now expected in a subdirectory of the user's home directory. Specifically, - the directory .postgresql must be owned by the user, and allow no access by 'group' or 'other.' - the file .postgresql/postgresql.crt must be a regular file owned by the user. - the file .postgresql/postgresql.key must be a regular file owned by the user, and allow no access by 'group' or 'other'. At the current time encrypted private keys are not supported. There should also be a way to support multiple client certs/keys. *) the front-end performs minimal validation of the back-end cert. Self-signed certs are permitted, but the common name *must* match the hostname used by the front-end. (The cert itself should always use a fully qualified domain name (FDQN) in its common name field.) This means that psql -h eris db will fail, but psql -h eris.example.com db will succeed. At the current time this must be an exact match; future patches may support any FQDN that resolves to the address returned by getpeername(2). Another common "problem" is expiring certs. For now, it may be a good idea to use a very-long-lived self-signed cert. As a compile-time option, the front-end can specify a file containing valid root certificates, but it is not yet required. *) the back-end performs minimal validation of the client cert. It allows self-signed certs. It checks for expiration. It supports a compile-time option specifying a file containing valid root certificates. *) both front- and back-ends default to TLSv1, not SSLv3/SSLv2. *) both front- and back-ends support DSA keys. DSA keys are moderately more expensive on startup, but many people consider them preferable than RSA keys. (E.g., SSH2 prefers DSA keys.) *) if /dev/urandom exists, both client and server will read 16k of randomization data from it. *) the server can read empheral DH parameters from the files $DataDir/dh512.pem $DataDir/dh1024.pem $DataDir/dh2048.pem $DataDir/dh4096.pem if none are provided, the server will default to hardcoded parameter files provided by the OpenSSL project. Remaining tasks: *) the select() clauses need to be revisited - the SSL abstraction layer may need to absorb more of the current code to avoid rare deadlock conditions. This also touches on a true solution to the pg_eof() problem. *) the SIGPIPE signal handler may need to be revisited. *) support encrypted private keys. *) sessions are not yet fully supported. (SSL sessions can span multiple "connections," and allow the client and server to avoid costly renegotiations.) *) makecert - a script that creates back-end certs. *) pgkeygen - a tool that creates front-end certs. *) the whole protocol issue, SASL, etc. *) certs are fully validated - valid root certs must be available. This is a hassle, but it means that you *can* trust the identity of the server. *) the client library can handle hardcoded root certificates, to avoid the need to copy these files. *) host name of server cert must resolve to IP address, or be a recognized alias. This is more liberal than the previous iteration. *) the number of bytes transferred is tracked, and the session key is periodically renegotiated. *) basic cert generation scripts (mkcert.sh, pgkeygen.sh). The configuration files have reasonable defaults for each type of use. Bear Giles
* removed personal test parametersDave Cramer2002-06-13
|
* Added test for newly implemented updateable result setsDave Cramer2002-06-13
|
* changes to accomodate updateable resultset mostly just call setSqlQuery on ↵Dave Cramer2002-06-13
| | | | execute
* Implemented updateable result sets based on raghu nidagal implementationDave Cramer2002-06-13
|
* changed some commented out messages to use the Driver.debug and fixed first ↵Dave Cramer2002-06-13
| | | | to read the underlying data into rowbuffer
* added messages for updateable result setsDave Cramer2002-06-13
|
* Applied Lee Kindness' patch to fix one of memory allocation with floating ↵Michael Meskes2002-06-12
| | | | point numbers.
* 1) Fix a bug *double error message*.Hiroshi Inoue2002-06-12
| | | | | 2) Fix a bug *passowrd prompt in case of md5 authentication*. 3) Improve the DSN setup dialog.
* Katherine Ward wrote:Jan Wieck2002-06-11
| | | | | | | | | | | | | | > Changes to avoid collisions with WIN32 & MFC names... > 1. Renamed: > a. PROC => PGPROC > b. GetUserName() => GetUserNameFromId() > c. GetCurrentTime() => GetCurrentDateTime() > d. IGNORE => IGNORE_DTF in include/utils/datetime.h & utils/adt/datetim > > 2. Added _P to some lex/yacc tokens: > CONST, CHAR, DELETE, FLOAT, GROUP, IN, OUT Jan
* The patch does the following:Barry Lind2002-06-11
| | | | | | | | | | | | | | | | | | | | Allows you to set the loglevel at runtime by adding ?loglevel=X to the connection URL, where 1 = INFO and 2 = DEBUG. Automatically turns on logging by calling DriverManager.setPrintWriter(new PrintWriter(System.out)) if one is not already set. Adds a Driver.info() message that prints out the version number Adds member variables logDebug and logInfo that can be checked before making logging methods calls Adds a build number to the version number string. This build number will need to be manually incremented when we see fit. ---------------------------------------------------------------------- Modified Files: org/postgresql/Connection.java org/postgresql/Driver.java.in org/postgresql/fastpath/Fastpath.java org/postgresql/jdbc1/DatabaseMetaData.java org/postgresql/jdbc2/Connection.java org/postgresql/jdbc2/DatabaseMetaData.java org/postgresql/largeobject/LargeObjectManager.java org/postgresql/util/PSQLException.java org/postgresql/util/Serialize.java ----------------------------------------------------------------------
* Remove int16 from libpgeasy examples. Improve error reporting.Bruce Momjian2002-06-07
|
* fixed bug reported by cc.ais40@wanadoo.fr where getObject was returning an ↵Barry Lind2002-06-07
| | | | Integer for a smallint datatype instead of a Short
* Fix interface example errors causes by backend changes.Bruce Momjian2002-06-07
| | | | Permaine Cheung
* change table name to lower case in getColumnsDave Cramer2002-06-06
|
* Add missing win_setup.h.Hiroshi Inoue2002-06-06
|
* Add *Int8 As* option.Hiroshi Inoue2002-06-06
|
* fixed getImported/ExportedKeys to be simpler, and return the correct number ↵Dave Cramer2002-06-05
| | | | of keys
* fixed bug reported by Noel Rappin (nrappin@sockeye.com) java Array type ↵Barry Lind2002-06-03
| | | | handled Timestamps incorrectly
* Small patch to correct the default arraysize associatedBruce Momjian2002-06-03
| | | | | | | | with the Cursor object's fetchmany() method. The API and inline documentation state that the default is 1. It currently defaults to 5. Patrick Macdonald
* Add PQescapeString and PQescapeBytea for Win32.Bruce Momjian2002-06-02
|
* Allow pod2man 5.005p3 to work with our current sources.Bruce Momjian2002-06-02
|
* small fix to testExportedKeysDave Cramer2002-05-30
|
* added imported/exported key testDatabaseMetaDataTest.javaDave Cramer2002-05-30
|
* Change PL/Perl and Pg interface build to use configured compiler andPeter Eisentraut2002-05-28
| | | | Makefile.shlib system, not MakeMaker.
* 1) Support Keyset Driven driver cursors.Hiroshi Inoue2002-05-22
| | | | | | | | | | 2) Supprt ARD precision/scale and SQL_C_NUEMRIC. 3) Minimal implementation of SQLGetDiagField(). 4) SQLRowCount() reports the result of SQLSetPos and SQLBulkOperation. 5) int8 -> SQL_NUMERIC for Microsoft Jet. 6) Support isolation level change. 7) ODBC3.0 SQLSTATE code. 8) Append mode log files.
* - Fixed some parser bugs.Michael Meskes2002-05-20
| | | | | - Removed some simple rules to work arounf bison limit for now. - Update c_keywords.c to reflect changes in keywords.c.
* - Fixed reduce/reduce conflict in parser.Michael Meskes2002-05-19
| | | | | | - Synced preproc.y with gram.y. - Synced pgc.l with scan.l. - Synced keywords.c.
* Merge the last few variable.c configuration variables into the genericTom Lane2002-05-17
| | | | | | | | | GUC support. It's now possible to set datestyle, timezone, and client_encoding from postgresql.conf and per-database or per-user settings. Also, implement rollback of SET commands that occur in a transaction that later fails. Create a SET LOCAL var = value syntax that sets the variable only for the duration of the current transaction. All per previous discussions in pghackers.
* fixed problem connecting to server with client_min_messages set to debug. ↵Barry Lind2002-05-14
| | | | The code was not expecting to receive notice messages during the connection handshake.
* Add a file for version control.Hiroshi Inoue2002-05-09
|
* Fix typo in usage instructions.Tom Lane2002-05-03
|
* Remove the last traces of datatypes datetime and timespan.Tom Lane2002-05-03
|
* - Synced yet again.Michael Meskes2002-04-28
| | | | - Fixed a typo in a comment printed by ecpg.
* Fix for the following items about escape sequenceHiroshi Inoue2002-04-25
| | | | | | | | | | | by Marcelo Aceto <aceto@newinf.com.br> . 1) Wrong translations of embedded escape sequences inside outer join escape sequences. 2) Wrong translation of parameter markers inside outer joins and function escape sequences. 3) Bad concatenation of date, time, timestamp constants with next word in statement:
* Remove reference to NAMEDATALEN, which wasn't necessary anyway.Peter Eisentraut2002-04-24
|
* Update jdbc errors_zh_TW.properties.Bruce Momjian2002-04-24
| | | | Zhenbang Wei
* I'm at the win32 error messages once more. The DLL load thingy doesn'tBruce Momjian2002-04-24
| | | | | | | | | | | | | | | | work on all win9x machines, so i made it go thru a l ookup table instead, using the DLL as last resort. I also moved this out of the fe-misc.c file because of the size of the lookup ta ble. Who knows, we might add more other win32 specific code there in the future. I also fixed a small typo in the pg_config.h.win32 that made the compiler compla in about the gnu snprintf declaration. I tried to make this patch with psql coding style. I've successfully tested this on win2k and win98 and it works fine (i.e. the mes sage shows on win98 too, it didn't with the old implementation). Magnus Naeslund
* pgdb.connect() seems to be broken on Python 2.0.1 (which ships withBruce Momjian2002-04-24
| | | | | | | | | | | Slackware 8), and perhaps on other Pythons, haven't checked. Something in the _pg.connect() call isn't working. I think the problem stems from the fact that 'host' is a named parameter of both _pg.connect and pgdb.connect, and so Python treats it as a variable assignment, not a named parameter. Uses non-named parameters. Andrew Johnson
* Sorry for the package, but the following patch need to be applied to getBruce Momjian2002-04-24
| | | | | | the new verion compiled on SCO Openserver 5.0.5 and Unixware 7.1.1 Nicolas Bazin
* 1) Fix SQLProcedures().Hiroshi Inoue2002-04-23
| | | | | 2) Handle timestamp without time zone. 3) Improve SQLForeignKeys() in multibyte mode.