Commit Graph

587 Commits

Author SHA1 Message Date
Brian Carlson
1674359b57 Respect SSL setting from connection parameters 2013-09-09 11:50:20 -05:00
brianc
bfdea752b2 Respect PGSSLMODE for setting SSL connection 2013-09-05 16:51:16 -05:00
rpedela
cd4565ba1f #181 #366 Add support for single row mode in Postgres 9.2+. This will enable single row mode only when the user wants to stream rows. 2013-09-04 11:46:07 -06:00
William Becker
3c6b106b86 fix trailing whitespace breaking jshint 2013-09-01 21:59:09 -05:00
William Becker
b7f8429ff7 handle early dates (< 100AD) 2013-09-01 21:59:09 -05:00
Brian Carlson
e744d05df7 Add ability to opt-in to int8 parsing
Switching the result of all COUNT operations to a string is
a pretty nasty breaking change, and the majority of us aren't
going to be hitting numbers larger than Number.MAX_VALUE
2013-08-29 00:04:27 -05:00
Brian Carlson
beeae35291 Fix js-hint error 2013-08-17 17:33:27 -05:00
Brian Carlson
c98125b065 Use on('data') for v0.8.x 2013-08-17 17:25:24 -05:00
Brian Carlson
5108161a47 Cleanup & tweak perf a bit 2013-08-17 14:21:19 -05:00
Brian Carlson
306f5dd493 Add comments 2013-08-07 15:35:07 -05:00
Brian Carlson
4cdd7a116b Compile result parsing for a 60% speed increase
Tested against a 1000 row result set.  Need to test against
smaller result sets & figure out a way to make this backwards compatible if possible
2013-08-07 15:33:57 -05:00
Brian Carlson
b6bca99489 Minor speed improvements 2013-08-07 12:41:38 -05:00
Brian Carlson
56b7c4168d Create message in each parsing function 2013-08-07 12:20:51 -05:00
Brian Carlson
31318c02a2 Speed up JavaScript parser slightly 2013-08-07 11:57:43 -05:00
Brian C
a17f7fc381 Merge pull request #409 from rpedela/master
Fix build when escape functions are not supported in libpq
2013-08-01 07:26:55 -07:00
Brian Carlson
fb5520bb8a Remove built-in binary int64 parser 2013-07-30 13:15:31 -05:00
rpedela
cf07a4f2b4 #403 Only use native escape functions if PG version >= 9.0.0. Otherwise use the JS functions. 2013-07-29 15:45:36 -06:00
Brian Carlson
910cc134c9 Make ref an optional dependency
The ref module adds a compile step even when using the pure-JavaScript client.
This makes the installation optional so if the install fails due to not having
a compiler around you can still use the JavaScript client.

closes #398
2013-07-23 10:10:41 -05:00
rpedela
ffe51c20f2 Add missing semicolons. 2013-07-15 09:13:48 -05:00
rpedela
876018e103 Add support for PQescapeLiteral and PQescapeIdentifier. Also add JS versions of the functions. 2013-07-15 09:13:48 -05:00
Aaron Boyd
0632c4eaf4 remove reference to pool when destroying
Leaving a reference to the pool means the
destroyed pool will get returned if you
later try to reconnect with the same
connection string.
2013-07-09 18:22:09 -07:00
Brian Carlson
145666c1b3 Support result rows as arrays 2013-07-08 17:45:06 -05:00
Brian Carlson
5462561e51 Cache result parser lookups 2013-07-08 09:32:53 -05:00
Brian Carlson
413eff72e5 Move row parsing into result object 2013-07-08 09:30:10 -05:00
Brian Carlson
3f96bbbc5c Add field metadata to query result object
Refactored the way rows are built in the native bindings which should
result in a small performance improvement
2013-07-08 09:19:30 -05:00
Brian Carlson
05e9026aea Remove tab character 2013-07-08 08:16:10 -05:00
Brian C
58b4f266ea Merge pull request #386 from brianc/js-ssl
Fix long-standing hanging SSL connection but with JavaScript
2013-07-01 12:43:54 -07:00
Brian C
5806afc8a1 Merge pull request #276 from bryanburgers/connection-url-ssl
Add ssl query string to the connection string parser #275
2013-06-29 23:24:02 -07:00
bmc
44784fa2f3 Fix JavaScript SSL upgrade logic
I had accepted the pull request way back without proper test coverage.
I've added test coverage & fixed this long-standing bug.
2013-06-29 23:20:48 -07:00
Brian C
95da124744 Merge pull request #385 from memosanchez/pg-default-test-hostname
Add default value for database host to lib/defaults.js
2013-06-29 15:50:31 -07:00
Guillermo A. Sanchez
738c966112 Add default value for connection host.
Native binding connection tests will fail if the PGHOST environment variable is not set.

There already exists several defaul values for user, password and port. It would make sense to have a default host setting as well - localhost appears to be a reasonable default.
2013-06-29 14:46:45 -07:00
Hannes Hörl
e9cb2965e9 Bugfix: safe call of .hasOwnProperty(...) 2013-06-26 23:46:15 +02:00
Hannes Hörl
c126ba1c7c Added NODE_PG_FORCE_NATIVE to force usage of libpg bindings (native client) 2013-06-26 22:32:07 +02:00
Brian C
42bae0c55e Merge pull request #353 from sevastos/bigint-bulletproofing
Handle bigint as string to prevent precision loss
2013-06-18 19:21:43 -07:00
Dave
6fea79712c Client encoding in defaults as well 2013-06-06 12:32:04 -07:00
Dave
6b4bc3945f Uses val function instead 2013-06-06 12:24:12 -07:00
Dave
f658b31aed Changing to client_encoding, adding test for creating a connection 2013-06-06 12:16:36 -07:00
Dave
d69070529c Makes encoding an optional parameter 2013-06-06 12:06:52 -07:00
Brian Carlson
337d49dddb Return field metadata on result object
Closes #209
Native implementation requires significant refactor and so I wont work on this
if/until there is an issue for it
2013-06-03 12:14:47 -05:00
sevastos
c2a93aafa5 Small improvements in parsers, additions to tests 2013-05-27 10:55:49 +03:00
sevastos
f827f56ed2 BigInt parsing bullet-proofing 2013-05-23 20:10:08 +03:00
Hebo
323a2f9f49 Fix client_encoding setting to support pg_bouncer when using libpq (#270) 2013-05-21 14:37:06 -07:00
Andrey Popp
4458e69285 call EventEmmiter constructor on native Connection
this allows to preserve an active domain on switches in libpq
2013-05-20 18:31:55 +04:00
bmc
10e6d85266 Add support for JSON data type
requires >= 9.2 of postgres
2013-04-22 10:18:17 -05:00
bmc
2ef1bbf8de Parse minutes in timezone description
Minutes in timezones are separated with a colon from the hour.

This closes #309
2013-04-22 04:57:46 -05:00
Brian C
8a2e864b30 Merge pull request #238 from cdauth/master
Store timezone-less dates in local time instead of UTC
2013-04-22 02:17:05 -07:00
bmc
56a5903a02 Make throws in query error callback not break client
If you receive an error while running a query and in user's callback
they throw an exception it can disrupt the internal query queue
and prevent a client from ever cleaning up properly
2013-04-19 09:25:53 -05:00
bmc
9b1c4facc2 Make query callback exceptions not break client
If you throw an exception in a query callback the client will not pulse
its internal query queue and therefor will never process any
more queries or emit its own 'drain' event.

I don't find this to be an issue in production code since I restart
the process on exceptions, but it can break tests and cause things
to 'hang'.  My crude benchmarks show no noticable impact in perf
from the try/catch/rethrow.

:q
2013-04-19 09:09:28 -05:00
brianc
3f5df0afa2 make tests pass on pg@8.4.9 2013-04-17 10:29:42 -05:00
za-creature
b6ef157e8e Update connection-parameters.js 2013-04-11 23:35:21 +03:00
za-creature
5493a52793 Update connection-parameters.js
Different double-encode removal strategy
2013-04-11 22:32:04 +03:00
za-creature
c666b20287 Update connection-parameters.js
The current connection url handling fails when the password contains
encoded special characters: After the encodeURI, the special
characters from the password are double encoded, and the password is
rejected by postgres.

Proposed fix handles one level of double encoding, and while it
might break compatibility with passwords like "asdfg%77fgh" (which
would've been escaped to asdfg%2577fgh before this patch), I
strongly feel that maintaining backwards compatibility is in this
case less important than following standards and discouraging bad
coding practices.
2013-04-11 19:57:03 +03:00
Candid Dauth
3aedebb0b0 Fixing parsing of timestamps without timezone in binary mode 2013-04-11 01:11:08 +02:00
Candid Dauth
694fc3eb6e Fixing code style to make #238 pass jshint 2013-04-11 00:41:15 +02:00
Candid Dauth
bde871707b Storing timezone-less dates in local time instead of UTC
Issue #225 caused such dates to be read, but not stored in local time.
2013-04-10 23:10:44 +02:00
bmc
b33c266734 increase speed of javascript parser ~5% 2013-04-08 19:04:17 -05:00
bmc
f16eaa8555 Merge branch 'benchmark' 2013-04-08 16:44:54 -05:00
bmc
ca5c10a02f clean up connection slightly & add initial bench 2013-04-08 16:44:41 -05:00
Karl Mikkelsen
44e4586e18 var utils declared and not used 2013-04-05 17:46:23 +12:00
bmc
766b4286d5 merge branch v1.0 2013-04-04 11:51:55 -05:00
brianc
6e3cc794c3 ignore socket hangup. fixes #314 2013-03-29 09:38:49 -05:00
brianc
683d636501 better handling of client stream termination
1. Pass an error to an active query if the client is ended while a query is in progress.
2. actually emit 'end' event on the client when the stream ends
3. do not emit an error from native bindings if lasterror is null
2013-03-28 13:24:33 -05:00
brianc
1d6541724e remove deprecation warnings & deprecate lib 2013-03-17 14:51:57 -05:00
brianc
cee5f1d8b3 move buffer-writer to external module 2013-03-16 11:51:26 -05:00
Sandro Santilli
f38f9f084d Fix parsing of numeric[], previously returning array of ints
Closes #304, includes testcase
2013-03-14 10:06:46 +01:00
brianc
a5ee365116 remove parseFloat 2013-03-07 16:19:11 -06:00
brianc
e93a4a5d66 remove pauseDrain/resumeDrain 2013-03-07 16:12:09 -06:00
brianc
9c7a33caca remove 2 parameter pg.connect function 2013-03-07 15:57:00 -06:00
brianc
213518648b ability to hide deprecation warnings 2013-03-07 10:01:14 -06:00
brianc
f30158f7c4 deprecate float parsing - closes #296 2013-03-07 09:54:01 -06:00
brianc
6415450634 deprecate pauseDrain/resumeDrain & auto-releasing client pool 2013-03-07 09:47:04 -06:00
Brian C
ed75b2f453 Merge pull request #291 from wgraeber/master
Potential fix for client_encoding error
2013-03-07 05:32:15 -08:00
brianc
c57eee8661 normalize whitespace, add comments, and do a little house cleaning 2013-03-06 10:26:40 -06:00
brianc
37bb13fc0c move type conversion related code under sub-folder 2013-03-06 08:57:38 -06:00
brianc
b58ae9e7f7 clean up prototype shorthand
For some reason a few years ago I thought it would be neat to use a shorthand version of prototype to save myself some keystrokes.  That was a cosmetic mistake.  It also breaks ctags.

Also, normalized some whitespace.
2013-03-06 08:48:52 -06:00
swilly
d4dc76077b possible fix for: error: unrecognized configuration parameter 'lient_encoding' 2013-03-05 15:44:20 -05:00
Andrew Dunstan
ed015f9b58 Fix Unix domain socket setting.
This code was misconceived in that the host parameter for a Unix
domain socket connection must point to the directory containing
the socket, and not to the socket itself. Libpq will look for
the socket based on the host and port settings. See
<http://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-PARAMKEYWORDS>
2013-02-23 11:11:44 -05:00
Brian C
c6d5f43473 Merge pull request #278 from adunstan/master
Allow passing a JS array instead of an array literal where SQL expects an array
2013-02-22 09:33:17 -08:00
Andrew Dunstan
c5b88dbff2 make indentation and blocking style consistent. 2013-02-22 09:37:29 -05:00
Andrew Dunstan
a3af2a21cf a visit from the jshint police 2013-02-21 17:45:46 -05:00
Andrew Dunstan
44b15422a0 allow passing JS array as a parameter instead of an array literal where SQL expects an array 2013-02-21 17:32:47 -05:00
bmc
5c95886749 clear deprecation warning on client error - fix test race 2013-02-21 14:49:26 -06:00
Bryan Burgers
79f85a4a9e Add ssl query string to the connection string parser 2013-02-20 18:17:18 -06:00
bmc
cc84799c7a integrate new pool into existing codebase 2013-02-20 16:08:48 -06:00
bmc
bb448fe61a finish out the first rev of the improved pool api 2013-02-19 19:34:28 -06:00
bmc
971eb5d1ef initial work on new pool 2013-02-15 16:13:28 -06:00
Arkady Emelyanov
4c254e8edf force utf-8 encoding on connect 2013-01-29 20:19:38 -06:00
Francois Payette
77daa06df9 use encodeURI instead of string replace 2013-01-29 19:54:25 -06:00
Brian C
2f75b2f6a9 Merge pull request #256 from booo/jshint
Introduce Jshint
2013-01-24 18:49:05 -08:00
Francois Payette
7d773508fc replace space by %20 in connection string before passing to url.parse 2013-01-24 20:05:55 -05:00
Philipp Borgers
22764e045c fix jshint errors in lib/connection-parameters.js 2013-01-24 22:07:53 +01:00
Philipp Borgers
6bc512a71f fix jshint error in lib/index.js 2013-01-24 22:05:35 +01:00
Philipp Borgers
6527899526 rename reserved word char to c 2013-01-24 22:05:35 +01:00
Philipp Borgers
cf6da99fca rename reserved word char to c 2013-01-24 22:05:35 +01:00
Philipp Borgers
5e3cfe5d47 fix jshint errors in lib/binaryParsers.js 2013-01-24 22:05:35 +01:00
Philipp Borgers
8e7e2f7a62 remove trailing whitespaces in lib/connection-parameters.js 2013-01-24 22:05:35 +01:00
Philipp Borgers
a7e9072ab8 fix jshint errors in lib/client.js 2013-01-24 22:05:35 +01:00
Philipp Borgers
051fa5558f remove trailing whitespaces in lib/query.js 2013-01-24 22:05:34 +01:00
Philipp Borgers
ace259fd0c remove trailing whitespaces in lib/copystream.js 2013-01-24 22:05:34 +01:00
Philipp Borgers
d8255c6f85 fix jshint errors in lib/connection.js 2013-01-24 22:05:34 +01:00
Philipp Borgers
5df417e589 fix jshint errors in lib/textParsers.js 2013-01-24 22:05:34 +01:00
Philipp Borgers
bed3de9490 fix jshint erros 2013-01-24 22:03:03 +01:00
Philipp Borgers
0c3e1cba83 fix jshint errors in lib/native/query.js 2013-01-24 22:03:03 +01:00
Philipp Borgers
3b1a5beba8 remove trailing whitespaces in lib/index.js 2013-01-24 22:03:02 +01:00
Philipp Borgers
4272f21685 remove trailing whitespace in lib/defaults.js 2013-01-24 22:03:02 +01:00
Philipp Borgers
3ba179a4d1 fix jshint errors for lib/defaults.js 2013-01-24 22:03:02 +01:00
Philipp Borgers
fe09e96ae9 fix jshint errors for lib/types.js 2013-01-24 22:03:02 +01:00
Philipp Borgers
ffe2c15a65 fix jshint errors for lib/index.js 2013-01-24 22:03:02 +01:00
Philipp Borgers
22d8538879 fix jshint errors for lib/utils.js 2013-01-24 22:03:02 +01:00
Philipp Borgers
a78effef2e fix jshint errors for lib/binaryParsers.js 2013-01-24 22:01:52 +01:00
Philipp Borgers
4e5e75dbee fix jshint errors for lib/client.js 2013-01-24 22:01:52 +01:00
Philipp Borgers
28afce25ed fix jshint errors for lib/result.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
5e92546a30 fix jshint errors for lib/connection-parameters.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
da1e62e684 fix jshint errors for lib/query.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
616804dc0d fix jshint errors for lib/copystream.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
cedcf0ca35 fix jshint errors for lib/connection.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
74c8945cfe fix jshint errors for lib/textParsers.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
60a022b0b0 fix jshint errors for lib/native/index.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
2cc91225e3 fix jshint errors for lib/native/query.js 2013-01-24 21:59:28 +01:00
Philipp Borgers
647110db9f fix jshint errors for lib/arrayParser.js 2013-01-24 21:59:27 +01:00
Philipp Borgers
35d04ff42e fix jshint errors for lib/writer.js 2013-01-24 21:59:27 +01:00
Brian C
beb3e4fcd1 Merge pull request #248 from liamks/master
Added varchar[] and char[] to array parsing.
2013-01-23 20:32:27 -08:00
bmc
113b6298e2 use ConnectionParameters with native bindings and remove unused util functions 2013-01-22 23:23:47 -06:00
bmc
1e3107aa55 use ConnectionParameters for js client properties 2013-01-21 16:14:19 -06:00
bmc
9dad56a54e add more functionality to connection parameters 2013-01-21 15:44:55 -06:00
bmc
ec0d0beff2 build libpq connection string & support domain socket 2013-01-21 15:09:44 -06:00
anton
88d684f925 bugfix. sometimes native copy to loose rows 2013-01-20 19:45:41 -06:00
anton
7ca21acb25 handle situation, when broken copy to query, ends before it is canceled 2013-01-20 19:45:41 -06:00
anton
8ea2f259ed bugfix: correctly create new connection for canceling copy to query 2013-01-20 19:45:41 -06:00
anton
c5c31143c1 1. behave correctly if copy to/from is send to db by query method (report error in standart way); 2. bugfix and code review in native copy to implementation 2013-01-20 19:45:40 -06:00
bmc
868a9d0e8d remove node-tap 2013-01-20 19:42:40 -06:00
bmc
92e75f0577 add ConnectionParameters object 2013-01-20 19:42:39 -06:00
soletan
d55d145378 fixing support for Unix sockets in native binding
Binding natively connections to Unix sockets failed due to DNS lookups applied on pathname to Unix socket's folder.
2013-01-18 23:58:51 +01:00
Liam Kaufman
18e63f1e86 added char[] and varchar[] to parsed datatypes 2013-01-17 17:57:10 -05:00
Sandro Santilli
2fc22de21a Send backend a CopyFail when no stream is defined to copy from 2013-01-16 12:41:14 +01:00
Sandro Santilli
a39e0d7cc9 Rework handling of missing stream object for copy ops
This version works better (doesn't throw) but also doesn't report
any error, which is not good
2013-01-16 12:04:28 +01:00
Sandro Santilli
de9d5e3cd5 Cleanly handle missing stream error on COPY operation. Closes #241 2013-01-16 10:11:55 +01:00
anton
8bcd40595d make copy related events to have same names in native and libpq clients 2013-01-06 12:06:26 -06:00
anton
98286152dd bugfixes in copy from stream. drain event 2013-01-06 12:06:26 -06:00
anton
d2b21aa95e just comments 2013-01-06 12:06:26 -06:00
anton
c014096e0e COPY TO/FROM native/libpq done. Looks like it works, but need to test 2013-01-06 12:06:26 -06:00
Stephen Sugden
903e9b25ea Attach Query constructors to Client constructors 2012-12-16 00:58:30 -06:00
Stephen Sugden
5a91dd0c35 Use normalizeQueryConfig with native driver 2012-12-16 00:58:30 -06:00
Stephen Sugden
5dae2b267f Extract query config normalization into utils 2012-12-16 00:58:30 -06:00
brianc
102a069bd2 have native bindings emit proper result object on 'end' event - closes #219 2012-12-10 23:25:26 -06:00
brianc
1c43930ba1 cleanup & fix failing tests to allow for green merge of pull #228 2012-12-10 22:44:58 -06:00
Troy Kruthoff
e62eb9339b make Query a public api 2012-12-10 21:32:20 -06:00
Sandro Santilli
ecee5529e4 Add comment about which oid correspond to which datetime field 2012-12-10 20:46:44 -06:00
Sandro Santilli
b7fd9a5625 Do not assume dates with no timezone specifier are UTC
Fixes #225
2012-12-10 20:46:44 -06:00
brianc
c5b804f5c4 fix reference to ssl parameters 2012-12-04 14:18:19 -06:00