summaryrefslogtreecommitdiff
path: root/src/interfaces
AgeCommit message (Collapse)Author
2014-01-30Add checks for interval overflow/underflowBruce Momjian
New checks include input, month/day/time internal adjustments, addition, subtraction, multiplication, and negation. Also adjust docs to correctly specify interval size in bytes. Report from Rok Kralj
2014-01-24libpq: Support TLS versions beyond TLSv1.Noah Misch
Per report from Jeffrey Walton, libpq has been accepting only TLSv1 exactly. Along the lines of the backend code, libpq will now support new versions as OpenSSL adds them. Marko Kreen, reviewed by Wim Lewis.
2014-01-24Add libpq function PQhostaddr().Fujii Masao
There was a bug in the psql's meta command \conninfo. When the IP address was specified in the hostaddr and psql used it to create a connection (i.e., psql -d "hostaddr=xxx"), \conninfo could not display that address. This is because \conninfo got the connection information only from PQhost() which could not return hostaddr. This patch adds PQhostaddr(), and changes \conninfo so that it can display not only the host name that PQhost() returns but also the IP address which PQhostaddr() returns. The bug has existed since 9.1 where \conninfo was introduced. But it's too late to add new libpq function into the released versions, so no backpatch.
2014-01-23Fix bugs in PQhost().Fujii Masao
In the platform that doesn't support Unix-domain socket, when neither host nor hostaddr are specified, the default host 'localhost' is used to connect to the server and PQhost() must return that, but it didn't. This patch fixes PQhost() so that it returns the default host in that case. Also this patch fixes PQhost() so that it doesn't return Unix-domain socket directory path in the platform that doesn't support Unix-domain socket. Back-patch to all supported versions.
2014-01-19Remove support for native krb5 authenticationMagnus Hagander
krb5 has been deprecated since 8.3, and the recommended way to do Kerberos authentication is using the GSSAPI authentication method (which is still fully supported). libpq retains the ability to identify krb5 authentication, but only gives an error message about it being unsupported. Since all authentication is initiated from the backend, there is no need to keep it at all in the backend.
2014-01-16Split ecpg_execute() in constituent partsAlvaro Herrera
Split the rather long ecpg_execute() function into ecpg_build_params(), ecpg_autostart_transaction(), a smaller ecpg_execute() and ecpg_process_output(). There is no user-visible change here, only code reorganization to support future patches. Author: Zoltán Böszörményi Reviewed by Antonin Houska. Larger, older versions of this patch were reviewed by Noah Misch and Michael Meskes.
2014-01-16Split ECPGdo() in constituent partsAlvaro Herrera
This splits ECPGdo() into ecpg_prologue(), ecpg_do() and ecpg_epilogue(), and renames free_params() into ecpg_free_params() and exports it. This makes it possible for future code to use these routines for their own purposes. There is no user-visible functionality change here, only code reorganization. Zoltán Böszörményi Reviewed by Antonin Houska. Larger, older versions of this patch were reviewed by Noah Misch and Michael Meskes.
2014-01-13Always use the same way to addres a descriptor in ecpg's regression tests.Michael Meskes
2014-01-09Changed regression test to ecpg test suite for alignment problem just with lastMichael Meskes
commit.
2014-01-09Fix descriptor output in ECPG.Michael Meskes
While working on most platforms the old way sometimes created alignment problems. This should fix it. Also the regresion tests were updated to test for the reported case. Report and fix by MauMau <maumau307@gmail.com>
2014-01-07Update copyright for 2014Bruce Momjian
Update all files in head, and files COPYRIGHT and legal.sgml in all back branches.
2014-01-01Do not use an empty hostname.Michael Meskes
When trying to connect to a given database libecpg should not try using an empty hostname if no hostname was given.
2013-12-03C comment: again update comment for pg_fe_sendauth for error casesBruce Momjian
2013-12-03Update C comment for pg_fe_getauthnameBruce Momjian
This function no longer takes an argument.
2013-12-03libpq: change PQconndefaults() to ignore invalid service filesBruce Momjian
Previously missing or invalid service files returned NULL. Also fix pg_upgrade to report "out of memory" for a null return from PQconndefaults(). Patch by Steve Singer, rewritten by me
2013-12-02Translation updatesPeter Eisentraut
2013-11-27ECPG: Fix searching for quoted cursor names case-sensitively.Michael Meskes
Patch by Böszörményi Zoltán <zb@cybertec.at>
2013-11-26ECPG: Fix offset to NULL/size indicator array.Michael Meskes
Patch by Boszormenyi Zoltan <zb@cybertec.at>
2013-11-26ECPG: Simplify free_variable()Michael Meskes
Patch by Boszormenyi Zoltan <zb@cybertec.at>
2013-11-26ECPG: Add EXEC SQL CLOSE C to the tests.Michael Meskes
Patch by Boszormenyi Zoltan <zb@cybertec.at>
2013-11-26ECPG: Free the malloc()'ed variables in the test so it comes out clean onMichael Meskes
Valgrind runs. Patch by Boszormenyi Zoltan <zb@cybertec.at>
2013-11-26ECPG: Make the preprocessor emit ';' if the variable type for a list ofMichael Meskes
variables is varchar. This fixes this test case: int main(void) { exec sql begin declare section; varchar a[50], b[50]; exec sql end declare section; return 0; } Since varchars are internally turned into custom structs and the type name is emitted for these variable declarations, the preprocessed code previously had: struct varchar_1 { ... } a _,_ struct varchar_2 { ... } b ; The comma in the generated C file was a syntax error. There are no regression test changes since it's not exercised. Patch by Boszormenyi Zoltan <zb@cybertec.at>
2013-11-25More improvement to comment parsing in ecpg.Michael Meskes
ECPG is not supposed to allow and output nested comments in C. These comments are only allowed in the SQL parts and must not be written into the C file. Also the different handling of different comments is documented.
2013-11-25Fix ecpg parsing of sizeof().Michael Meskes
The last fix used the wrong non-terminal to define valid types.
2013-11-24Allow C array definitions to use sizeof().Michael Meskes
When parsing C variable definitions ecpg should allow sizeof() operators as array dimensions.
2013-11-24Distinguish between C and SQL mode for C-style comments.Michael Meskes
SQL standard asks for allowing nested comments, while C does not. Therefore the two comments, while mostly similar, have to be parsed seperately.
2013-11-19ecpg: Split off mmfatal() from mmerror()Peter Eisentraut
This allows decorating mmfatal() with noreturn compiler hints, leading to better diagnostics.
2013-11-18Replace appendPQExpBuffer(..., <constant>) with appendPQExpBufferStrHeikki Linnakangas
Arguably makes the code a bit more readable, and might give a small performance gain. David Rowley
2013-11-10Fix whitespace issues found by git diff --check, add gitattributesPeter Eisentraut
Set per file type attributes in .gitattributes to fine-tune whitespace checks. With the associated cleanups, the tree is now clean for git
2013-11-09Fix ECPG compiler warning.Robert Haas
Commit 9b4d52f2095be96ca238ce41f6963ec56376491f failed to notice that pg_regress_ecpg needed updating. This patch was independently submitted by both David Rowley and Andres Freund.
2013-11-03Changed test case slightly so it doesn't have an unused typedef.Michael Meskes
2013-10-25Improve pqexpbuffer.c to use modern vsnprintf implementations efficiently.Tom Lane
When using a C99-compliant vsnprintf, we can use its report of the required buffer size to avoid making multiple loops through the formatting logic. This is similar to the changes recently made in stringinfo.c, but we can't use psprintf.c here because in libpq we don't want to exit() on error. (The behavior pqexpbuffer.c has historically used is to mark the PQExpBuffer as "broken", ie empty, if it runs into any fatal problem.) To avoid duplicating code more than necessary, I refactored printfPQExpBuffer and appendPQExpBuffer to share a subroutine that's very similar to psprintf.c's pvsnprintf in spirit.
2013-10-22Get rid of use of asprintf() in favor of a more portable implementation.Tom Lane
asprintf(), aside from not being particularly portable, has a fundamentally badly-designed API; the psprintf() function that was added in passing in the previous patch has a much better API choice. Moreover, the NetBSD implementation that was borrowed for the previous patch doesn't work with non-C99-compliant vsnprintf, which is something we still have to cope with on some platforms; and it depends on va_copy which isn't all that portable either. Get rid of that code in favor of an implementation similar to what we've used for many years in stringinfo.c. Also, move it into libpgcommon since it's not really libpgport material. I think this patch will be enough to turn the buildfarm green again, but there's still cosmetic work left to do, namely get rid of pg_asprintf() in favor of using psprintf(). That will come in a followon patch.
2013-10-13Translation updates to fix build failuresPeter Eisentraut
Now that msgfmt is run with -c by default, older versions of gettext are complaining about the PO headers Last-Translator and Language-Team still having their default values. Newer gettext versions fail to catch this because of a bug (https://savannah.gnu.org/bugs/?40261), which is why this hasn't been noticed before. Copy updated versions of affected translation files from the pgtranslations repository, were those files have been fixed.
2013-10-13Add use of asprintf()Peter Eisentraut
Add asprintf(), pg_asprintf(), and psprintf() to simplify string allocation and composition. Replacement implementations taken from NetBSD. Reviewed-by: Álvaro Herrera <alvherre@2ndquadrant.com> Reviewed-by: Asif Naeem <anaeem.it@gmail.com>
2013-10-07Translation updatesPeter Eisentraut
2013-09-23Fix SSL deadlock risk in libpqStephen Frost
In libpq, we set up and pass to OpenSSL callback routines to handle locking. When we run out of SSL connections, we try to clean things up by de-registering the hooks. Unfortunately, we had a few calls into the OpenSSL library after these hooks were de-registered during SSL cleanup which lead to deadlocking. This moves the thread callback cleanup to be after all SSL-cleanup related OpenSSL library calls. I've been unable to reproduce the deadlock with this fix. In passing, also move the close_SSL call to be after unlocking our ssl_config mutex when in a failure state. While it looks pretty unlikely to be an issue, it could have resulted in deadlocks if we ended up in this code path due to something other than SSL_new failing. Thanks to Heikki for pointing this out. Back-patch to all supported versions; note that the close_SSL issue only goes back to 9.0, so that hunk isn't included in the 8.4 patch. Initially found and reported by Vesa-Matti J Kari; many thanks to both Heikki and Andres for their help running down the specific issue and reviewing the patch.
2013-09-08Return error if allocation of new element was not possible.Michael Meskes
Found by Coverity.
2013-09-08Close file to no leak file descriptor memory. Found by Coverity.Michael Meskes
2013-09-02Translation updatesPeter Eisentraut
2013-08-27Fix some "translator:" comments mangled by pgindentAlvaro Herrera
2013-08-18Translation updatesPeter Eisentraut
2013-08-17libpq: Report strerror on pthread_mutex_lock() failurePeter Eisentraut
2013-08-01Improve handling of pthread_mutex_lock error caseStephen Frost
We should really be reporting a useful error along with returning a valid return code if pthread_mutex_lock() throws an error for some reason. Add that and back-patch to 9.0 as the prior patch. Pointed out by Alvaro Herrera
2013-08-01Add locking around SSL_context usage in libpqStephen Frost
I've been working with Nick Phillips on an issue he ran into when trying to use threads with SSL client certificates. As it turns out, the call in initialize_SSL() to SSL_CTX_use_certificate_chain_file() will modify our SSL_context without any protection from other threads also calling that function or being at some other point and trying to read from SSL_context. To protect against this, I've written up the attached (based on an initial patch from Nick and much subsequent discussion) which puts locks around SSL_CTX_use_certificate_chain_file() and all of the other users of SSL_context which weren't already protected. Nick Phillips, much reworked by Stephen Frost Back-patch to 9.0 where we started loading the cert directly instead of using a callback.
2013-07-29Sync ECPG with WITH ORDINALITY changesGreg Stark
2013-07-23Check for NULL result from strdupAlvaro Herrera
Per Coverity Scan
2013-07-22ecpg: Move function prototype into header filePeter Eisentraut
PGTYPEStimestamp_defmt_scan() was declared twice inside different .c files, with slightly different prototypes. Move it into a header file and correct the prototype.
2013-07-19Initialize day of year value.Michael Meskes
There are cases where the day of year value in struct tm is used, but it never got calculated. Problem found by Coverity scan.
2013-07-15Fix PQconninfoParse error message handlingPeter Eisentraut
The returned error message already includes a newline, but the callers were adding their own when printing it out.