48 Commits

Author SHA1 Message Date
Christopher Young
f4d123b09e Prevents bad ssl credentials from causing a crash
Fixes: https://github.com/brianc/node-postgres/issues/2307
Fixes: https://github.com/brianc/node-postgres/issues/2004
2020-08-12 07:22:34 -07:00
Charmander
1b022f8c5f Remove accidentally duplicated methods
Fixes #2293.
2020-07-26 10:30:01 -07:00
Brian C
8291b233b8
Merge pull request #2277 from brianc/bmc/remove-comments
Remove out of date unneeded copyright / license comments
2020-07-16 09:58:20 -05:00
Brian M. Carlson
9ba4ebb803 Fix SASL again 2020-07-15 13:53:12 -05:00
Brian M. Carlson
66d32c6f3f Fix more SASL. Thank God for tests. 2020-07-15 13:38:34 -05:00
Brian M. Carlson
fdf13bac34 Fix msg not being passed for SASL 2020-07-15 13:30:25 -05:00
Brian M. Carlson
5425bc15d2 Fix untested pgpass code 2020-07-15 13:19:45 -05:00
Brian M. Carlson
966278a5cc Instance bound methods are not supported in node 8 2020-07-15 12:59:10 -05:00
Brian M. Carlson
9bf31060e1 Cleanup some dead code 2020-07-15 12:22:13 -05:00
Brian M. Carlson
5ba7e3fb48 Refactor connection to class 2020-07-15 11:49:54 -05:00
Brian M. Carlson
9d1dce9c5d Mark handler methods as 'private' 2020-07-15 11:42:33 -05:00
Brian M. Carlson
63e15d15fa Refactor 2020-07-15 11:31:16 -05:00
Brian M. Carlson
0b424cfff1 Move more functionality to methods 2020-07-15 11:16:46 -05:00
Brian M. Carlson
66e1e76c9b More refactoring 2020-07-15 11:05:31 -05:00
Brian M. Carlson
04e5297d2e Convert more things to ES6 classes 2020-07-15 10:33:33 -05:00
Brian M. Carlson
80d07c489f Remove out of date unneeded copyright / license comments 2020-07-15 10:01:26 -05:00
Brian C
da5d4efef4
Merge pull request #2216 from rafiss/pgoptions
Support options connection parameter
2020-07-08 12:16:03 -05:00
Brian M. Carlson
a79c8e7992 Send sync after flush 2020-05-15 17:51:09 -05:00
Rafi Shamim
06cdf3e9f0 Support options connection parameter
This supports the connection parameter documented here:
https://www.postgresql.org/docs/9.1/libpq-connect.html#LIBPQ-CONNECT-OPTIONS
2020-05-14 10:07:35 -04:00
Brian M. Carlson
08afb12dcc Set noDelay to true 2020-05-12 16:32:40 -05:00
Brian M. Carlson
520bd35319 Switch internals to use faster connection
This switches the internals to use faster protocol parsing & serializing.  This results in a significant (30% - 50%) speed up in some common query patterns.  There is quite a bit more performance work I need to do, but this takes care of some initial stuff & removes a big fork in the code.
2020-05-12 10:56:14 -05:00
Brian M. Carlson
7929f6ae44 Make change less invasive and fully backwards compatible for native binding config 2020-05-07 11:36:39 -05:00
Brian M. Carlson
e9073f5a00 Cleanup & comments 2020-05-05 11:03:29 -05:00
Brian M. Carlson
b89eb0f81d Write tests & unify treatment of no-verify 2020-05-05 10:58:34 -05:00
Brian M. Carlson
d8c7005115 Merge branch 'bhsj/noverify' of https://github.com/benhjames/node-postgres into benhjames-bhsj/noverify 2020-05-05 10:35:46 -05:00
Brian M. Carlson
9e11004e8a No need to import from dist 2020-05-05 09:53:56 -05:00
Brian M. Carlson
3a2af0f52c Fix relative path import
Closes #2188
2020-05-05 09:50:53 -05:00
Ben Salili-James
6937a2428b Add PGSSLMODE=noverify support to opt-out of rejecting self-signed certs 2020-05-05 13:24:11 +01:00
Charmander
149f482324 Replace uses of private/undocumented readyState API
The `readyState` of a newly-created `net.Socket` changed from `'closed'` to `'open'` in Node 14.0.0, so this makes the JS driver work on Node 14.

`Connection` now always calls `connect` on its `stream` when `connect` is called on it.
2020-04-21 23:20:48 -07:00
Brian M. Carlson
8591d94fcc Re-upgrade to prettier@2.x 2020-04-10 11:31:03 -05:00
Brian M. Carlson
6353affeca Downgrade to prettier@1.x to support node@8.x 2020-04-10 11:15:42 -05:00
Brian M. Carlson
c13cf81ee8 Lint pg & turn off semicolons 2020-04-10 10:47:57 -05:00
Brian C
3ff91eaa32
Decouple serializing messages w/ writing them to socket (#2155)
* Move message writing to typescript lib

* Write more tests, cleanup code to some extent

* Rename package to something more representing its name

* Remove unused code

* Small tweaks based on microbenchmarks

* Rename w/o underscore
2020-04-09 12:28:19 -05:00
Brian C
2013d77b28
Parser speed improvements (#2151)
* Change from transform stream

* Yeah a thing

* Make tests pass, add new code to travis

* Update 'best' benchmarks and include tsc in pretest script

* Need to add build early so we can create test tables

* logging
2020-04-02 16:48:22 -05:00
Brian C
aafd8ac64e
8.0 Release (#2117)
* Drop support for EOL versions of node (#2062)

* Drop support for EOL versions of node

* Re-add testing for node@8.x

* Revert changes to .travis.yml

* Update packages/pg-pool/package.json

Co-Authored-By: Charmander <~@charmander.me>

Co-authored-by: Charmander <~@charmander.me>

* Remove password from stringified outputs (#2066)

* Remove password from stringified outputs

Theres a security concern where if you're not careful and you include your client or pool instance in console.log or stack traces it might include the database password.  To widen the pit of success I'm making that field non-enumerable.  You can still get at it...it just wont show up "by accident" when you're logging things now.

The backwards compatiblity impact of this is very small, but it is still technically somewhat an API change so...8.0.

* Implement feedback

* Fix more whitespace the autoformatter changed

* Simplify code a bit

* Remove password from stringified outputs (#2070)

* Keep ConnectionParameters’s password property writable

`Client` writes to it when `password` is a function.

* Avoid creating password property on pool options

when it didn’t exist previously.

* Allow password option to be non-enumerable

to avoid breaking uses like `new Pool(existingPool.options)`.

* Make password property definitions consistent

in formatting and configurability.

Co-authored-by: Charmander <~@charmander.me>

* Make `native` non-enumerable (#2065)

* Make `native` non-enumerable

Making it non-enumerable means less spurious "Cannot find module"
errors in your logs when iterating over `pg` objects.

`Object.defineProperty` has been available since Node 0.12.

See https://github.com/brianc/node-postgres/issues/1894#issuecomment-543300178

* Add test for `native` enumeration

Co-authored-by: Gabe Gorelick <gabegorelick@gmail.com>

* Use class-extends to wrap Pool (#1541)

* Use class-extends to wrap Pool

* Minimize diff

* Test `BoundPool` inheritance

Co-authored-by: Charmander <~@charmander.me>
Co-authored-by: Brian C <brian.m.carlson@gmail.com>

* Continue support for creating a pg.Pool from another instance’s options (#2076)

* Add failing test for creating a `BoundPool` from another instance’s settings

* Continue support for creating a pg.Pool from another instance’s options

by dropping the requirement for the `password` property to be enumerable.

* Use user name as default database when user is non-default (#1679)

Not entirely backwards-compatible.

* Make native client password property consistent with others

i.e. configurable.

* Make notice messages not an instance of Error (#2090)

* Make notice messages not an instance of Error

Slight API cleanup to make a notice instance the same shape as it was, but not be an instance of error.  This is a backwards incompatible change though I expect the impact to be minimal.

Closes #1982

* skip notice test in travis

* Pin node@13.6 for regression in async iterators

* Check and see if node 13.8 is still borked on async iterator

* Yeah, node still has changed edge case behavior on stream

* Emit notice messages on travis

* Revert "Revert "Support additional tls.connect() options (#1996)" (#2010)" (#2113)

This reverts commit 510a273ce45fb73d0355cf384e97ea695c8a5bcc.

* Fix ssl tests (#2116)

* Convert Query to an ES6 class (#2126)

The last missing `new` deprecation warning for pg 8.

Co-authored-by: Charmander <~@charmander.me>
Co-authored-by: Gabe Gorelick <gabegorelick@gmail.com>
Co-authored-by: Natalie Wolfe <natalie@lifewanted.com>
2020-03-30 10:31:35 -05:00
Brian C
1c8b6b93cf
Call callback when end called on unconnected client (#2109)
* Call callback when end called on unconnected client

Closes #2108

* Revert a bit of the change

* Use readyState because pending doesn't exist in node 8.x

* Update packages/pg/lib/client.js

use bring your own promise

Co-Authored-By: Charmander <~@charmander.me>

Co-authored-by: Charmander <~@charmander.me>
2020-02-25 08:48:58 -06:00
Michal Brašna
823153138f
Destroy socket when there was an error on it (#1975)
When error happens on socket, potentially dead socket is kept open indefinitely by calling "connection.end()".
Similar issue is that it keeps socket open until long-running query is finished even though the connection was ended.
2020-02-14 08:23:41 -08:00
Brian C
5be3d95f62
Remove double-send of ssl request packet (#2086)
* Remove double-send of ssl request packet

I missed the fact that we are already sending this.  Since I don't have good test coverage for ssl [which I am planning on fixing next](https://github.com/brianc/node-postgres/issues/2009) this got missed.

I'm forcing an SSL test on travis.  This will break for me locally as I don't have SSL enabled on my local test DB. Something I will also remedy.
2020-01-29 18:10:23 -06:00
Brian C
11ab1daadd
Close connection on SSL connection errors (#2082)
* Close connection on SSL connection errors

Fixes #2079

* Fix test

* Remove console.log

* Fix tests, implement same behavior for native client

* Fix tests
2020-01-29 10:18:20 -06:00
Charmander
ee8d32f97c Deprecate implicit TLS rejectUnauthorized: false (#2075)
Yes, it treats `undefined` as `false`. Discussion in #2009. Introduced unintentionally in pg 0.8.7.
2020-01-15 14:59:26 -06:00
Brian C
19308f9ceb
Result.fields should always be an array (#2060)
This fixes a subtle backwards incompatible change.  Added a test to prevent further regressions.  Closes #2056
2020-01-09 21:30:53 -06:00
Andrew Heuermann
bb8e806bc5
Adding ability to pass through idle_in_transaction_session_timeout 2019-12-27 15:31:19 -06:00
Brian M. Carlson
6168f2ee0d Disable lint on missing module since the file is not included 2019-12-27 03:22:30 +00:00
Brian M. Carlson
b0be9da986 Cleanup 2019-12-19 18:57:48 -06:00
Brian M. Carlson
e500479382 Add streaming parser 2019-12-19 14:41:05 -06:00
Brian M. Carlson
d2cad38452 Dont use experimental parser yet 2019-12-19 07:39:04 -06:00
Brian M. Carlson
e5d46749c0 Work in progress...convert to more efficient reader 2019-12-18 23:44:43 -06:00
Brian C
1b5f3e33c4
Monorepo (#2014)
* First crack at monorepo

* Update test command

* Update path to script

* Remove node 6 from CI
2019-12-17 08:32:08 -08:00