Skip to content

Commit 06cc8e4

Browse files
committed
Remove unnecessary portal and flush
1 parent 605a917 commit 06cc8e4

File tree

3 files changed

+42
-36
lines changed

3 files changed

+42
-36
lines changed

lib/backend.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ function Backend({
6161
}
6262

6363
/* c8 ignore next 2 */
64-
function BindComplete() { /* No handling needed */ }
64+
function BindComplete() {
65+
backend.query.result.columns = backend.query.statement.columns
66+
}
67+
6568
function CloseComplete() { /* No handling needed */ }
6669

6770
function NotificationResponse(x) {
@@ -77,6 +80,8 @@ function Backend({
7780
}
7881

7982
function CommandComplete(x) {
83+
rows = 0
84+
8085
if (!backend.query)
8186
return
8287

@@ -180,9 +185,7 @@ function Backend({
180185
}
181186

182187
/* c8 ignore next 3 */
183-
function ParameterDescription() {
184-
backend.error = errors.notSupported('ParameterDescription')
185-
}
188+
function ParameterDescription() { /* No handling needed */ }
186189

187190
function RowDescription(x) {
188191
if (backend.query.result.command) {
@@ -192,8 +195,6 @@ function Backend({
192195
backend.query.statement.columns = null
193196
}
194197

195-
rows = 0
196-
197198
if (backend.query.statement.columns)
198199
return backend.query.result.columns = backend.query.statement.columns
199200

lib/connection.js

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module.exports = Connection
1111
let count = 1
1212

1313
function Connection(options = {}) {
14+
const statements = new Map()
1415
const {
1516
onparameter,
1617
transform,
@@ -31,7 +32,6 @@ function Connection(options = {}) {
3132
let ready = false
3233
let write = false
3334
let next = false
34-
let statements = {}
3535
let connect_timer
3636
let buffers = null
3737
let remaining = 0
@@ -73,7 +73,7 @@ function Connection(options = {}) {
7373
))).then(x => {
7474
x === END || done
7575
? socket.write(frontend.Close())
76-
: socket.write(frontend.Execute(backend.query.cursor.rows))
76+
: socket.write(frontend.ExecuteCursor(backend.query.cursor.rows))
7777
}).catch(err => {
7878
backend.query.reject(err)
7979
socket.write(frontend.Close())
@@ -94,7 +94,7 @@ function Connection(options = {}) {
9494

9595
function onparse() {
9696
if (backend.query && backend.query.statement.sig)
97-
statements[backend.query.statement.sig] = backend.query.statement
97+
statements.set(backend.query.statement.sig, backend.query.statement)
9898
}
9999

100100
function onauth(type, x, onerror) {
@@ -132,7 +132,7 @@ function Connection(options = {}) {
132132

133133
function retry(query) {
134134
query.retried = true
135-
delete statements[query.sig]
135+
statements.delete(query.sig)
136136
ready = true
137137
backend.query = backend.error = null
138138
send(query, { sig: query.sig, str: query.str, args: query.args })
@@ -150,8 +150,8 @@ function Connection(options = {}) {
150150
typeof options.debug === 'function' && options.debug(id, str, args)
151151
const buffer = query.simple
152152
? simple(str, query)
153-
: sig in statements
154-
? prepared(statements[sig], args, query)
153+
: statements.has(sig)
154+
? prepared(statements.get(sig), args, query)
155155
: prepare(sig, str, args, query)
156156

157157
ready
@@ -187,23 +187,31 @@ function Connection(options = {}) {
187187

188188
function prepared(statement, args, query) {
189189
query.statement = statement
190-
return bind(query, args)
190+
return Buffer.concat([
191+
frontend.Bind(query.statement.name, args),
192+
query.cursor
193+
? frontend.Describe('P')
194+
: Buffer.alloc(0),
195+
query.cursor
196+
? frontend.ExecuteCursor(query.cursor.rows)
197+
: frontend.Execute
198+
])
191199
}
192200

193201
function prepare(sig, str, args, query) {
194202
query.statement = { name: sig ? 'p' + uid + statement_id++ : '', sig }
195203
return Buffer.concat([
196204
frontend.Parse(query.statement.name, str, args),
197-
bind(query, args)
205+
frontend.Bind(query.statement.name, args),
206+
query.cursor
207+
? frontend.Describe('P')
208+
: frontend.Describe('S', query.statement.name),
209+
query.cursor
210+
? frontend.ExecuteCursor(query.cursor.rows)
211+
: frontend.Execute
198212
])
199213
}
200214

201-
function bind(query, args) {
202-
return query.cursor
203-
? frontend.Bind(query.statement.name, args, query.cursor.rows)
204-
: frontend.Bind(query.statement.name, args)
205-
}
206-
207215
function idle() {
208216
if (idle_timeout && !backend.query && queries.length === 0) {
209217
clearTimeout(timer)
@@ -323,7 +331,7 @@ function Connection(options = {}) {
323331
}
324332

325333
function cleanup() {
326-
statements = {}
334+
statements.clear()
327335
open = ready = write = false
328336
}
329337

lib/frontend.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ const { errors } = require('./errors.js')
66
const N = String.fromCharCode(0)
77
const empty = Buffer.alloc(0)
88
const Sync = bytes.S().end()
9-
const execute = Buffer.concat([
10-
bytes.D().str('P').str(N).end(),
9+
const Flush = bytes.H().end()
10+
const Execute = Buffer.concat([
1111
bytes.E().str(N).i32(0).end(),
12-
bytes.H().end(),
1312
bytes.S().end()
1413
])
1514

@@ -42,10 +41,13 @@ module.exports = {
4241
auth,
4342
Bind,
4443
Sync,
44+
Flush,
4545
Parse,
4646
Query,
4747
Close,
4848
Execute,
49+
ExecuteCursor,
50+
Describe,
4951
CopyData,
5052
CopyDone,
5153
CopyFail
@@ -170,7 +172,7 @@ function CopyFail(err) {
170172
.end()
171173
}
172174

173-
function Bind(name, args, rows = 0) {
175+
function Bind(name, args) {
174176
let prev
175177

176178
bytes
@@ -193,16 +195,7 @@ function Bind(name, args, rows = 0) {
193195

194196
bytes.i16(0)
195197

196-
return Buffer.concat([
197-
bytes.end(),
198-
rows
199-
? Buffer.concat([
200-
bytes.D().str('P').str(N).end(),
201-
bytes.E().str(N).i32(rows).end(),
202-
bytes.H().end()
203-
])
204-
: execute
205-
])
198+
return bytes.end()
206199
}
207200

208201
function Parse(name, str, args) {
@@ -217,7 +210,11 @@ function Parse(name, str, args) {
217210
return bytes.end()
218211
}
219212

220-
function Execute(rows) {
213+
function Describe(x, name = '') {
214+
return bytes.D().str(x).str(name + N).end()
215+
}
216+
217+
function ExecuteCursor(rows) {
221218
return Buffer.concat([
222219
bytes.E().str(N).i32(rows).end(),
223220
bytes.H().end()

0 commit comments

Comments
 (0)