Skip to content

Commit

Permalink
build
Browse files Browse the repository at this point in the history
  • Loading branch information
porsager committed Jul 1, 2023
1 parent 7f6e0cc commit e546ac0
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 16 deletions.
2 changes: 1 addition & 1 deletion cjs/src/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
final && (final(), final = null)

if (result.command === 'BEGIN' && max !== 1 && !connection.reserved)
return errored(Errors.generic('UNSAFE_TRANSACTION', 'Only use sql.begin or max: 1'))
return errored(Errors.generic('UNSAFE_TRANSACTION', 'Only use sql.begin, sql.reserved or max: 1'))

if (query.options.simple)
return BindComplete()
Expand Down
15 changes: 10 additions & 5 deletions cjs/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@ function parseOptions(a, b) {
query.sslmode && (query.ssl = query.sslmode, delete query.sslmode)
'timeout' in o && (console.log('The timeout option is deprecated, use idle_timeout instead'), o.idle_timeout = o.timeout) // eslint-disable-line

const ints = ['idle_timeout', 'connect_timeout', 'max_lifetime', 'max_pipeline', 'backoff', 'keep_alive']
const defaults = {
max : 10,
ssl : false,
Expand All @@ -454,12 +455,16 @@ function parseOptions(a, b) {
database : o.database || o.db || (url.pathname || '').slice(1) || env.PGDATABASE || user,
user : user,
pass : o.pass || o.password || url.password || env.PGPASSWORD || '',
...Object.entries(defaults).reduce((acc, [k, d]) =>
(acc[k] = k in o ? o[k] : k in query
...Object.entries(defaults).reduce(
(acc, [k, d]) => {
const value = k in o ? o[k] : k in query
? (query[k] === 'disable' || query[k] === 'false' ? false : query[k])
: env['PG' + k.toUpperCase()] || d,
acc
),
: env['PG' + k.toUpperCase()] || d
acc[k] = typeof value === 'string' && ints.includes(k)
? +value
: value
return acc
},
{}
),
connection : {
Expand Down
2 changes: 1 addition & 1 deletion cjs/tests/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2503,7 +2503,7 @@ t('concurrent cursors multiple connections', async() => {
t('reserve connection', async() => {
const reserved = await sql.reserve()

setTimeout(() => reserved.release(), 500)
setTimeout(() => reserved.release(), 510)

const xs = await Promise.all([
reserved`select 1 as x`.then(([{ x }]) => ({ time: Date.now(), x })),
Expand Down
9 changes: 7 additions & 2 deletions deno/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -451,9 +451,14 @@ const result = await sql.file('query.sql', ['Murray', 68])
```

### Multiple statements in one query
#### `await sql`select 1;select 2`.simple()
#### ```await sql``.simple()```

The postgres wire protocol supports "simple" and "extended" queries. "simple" queries supports multiple statements, but does not support any dynamic parameters. "extended" queries support parameters but only one statement. To use "simple" queries you can use sql``.simple(). That will create it as a simple query.
The postgres wire protocol supports ["simple"](https://www.postgresql.org/docs/current/protocol-flow.html#id-1.10.6.7.4) and ["extended"](https://www.postgresql.org/docs/current/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY) queries. "simple" queries supports multiple statements, but does not support any dynamic parameters. "extended" queries support parameters but only one statement. To use "simple" queries you can use
```sql``.simple()```. That will create it as a simple query.

```js
await sql`select 1; select 2;`.simple()
```

### Copy to/from as Streams

Expand Down
2 changes: 1 addition & 1 deletion deno/src/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,7 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
final && (final(), final = null)

if (result.command === 'BEGIN' && max !== 1 && !connection.reserved)
return errored(Errors.generic('UNSAFE_TRANSACTION', 'Only use sql.begin or max: 1'))
return errored(Errors.generic('UNSAFE_TRANSACTION', 'Only use sql.begin, sql.reserved or max: 1'))

if (query.options.simple)
return BindComplete()
Expand Down
15 changes: 10 additions & 5 deletions deno/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,7 @@ function parseOptions(a, b) {
query.sslmode && (query.ssl = query.sslmode, delete query.sslmode)
'timeout' in o && (console.log('The timeout option is deprecated, use idle_timeout instead'), o.idle_timeout = o.timeout) // eslint-disable-line

const ints = ['idle_timeout', 'connect_timeout', 'max_lifetime', 'max_pipeline', 'backoff', 'keep_alive']
const defaults = {
max : 10,
ssl : false,
Expand All @@ -455,12 +456,16 @@ function parseOptions(a, b) {
database : o.database || o.db || (url.pathname || '').slice(1) || env.PGDATABASE || user,
user : user,
pass : o.pass || o.password || url.password || env.PGPASSWORD || '',
...Object.entries(defaults).reduce((acc, [k, d]) =>
(acc[k] = k in o ? o[k] : k in query
...Object.entries(defaults).reduce(
(acc, [k, d]) => {
const value = k in o ? o[k] : k in query
? (query[k] === 'disable' || query[k] === 'false' ? false : query[k])
: env['PG' + k.toUpperCase()] || d,
acc
),
: env['PG' + k.toUpperCase()] || d
acc[k] = typeof value === 'string' && ints.includes(k)
? +value
: value
return acc
},
{}
),
connection : {
Expand Down
2 changes: 1 addition & 1 deletion deno/tests/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2505,7 +2505,7 @@ t('concurrent cursors multiple connections', async() => {
t('reserve connection', async() => {
const reserved = await sql.reserve()

setTimeout(() => reserved.release(), 500)
setTimeout(() => reserved.release(), 510)

const xs = await Promise.all([
reserved`select 1 as x`.then(([{ x }]) => ({ time: Date.now(), x })),
Expand Down

0 comments on commit e546ac0

Please sign in to comment.