Files
lcbp3.np-dms.work/backend/node_modules/mariadb/lib/cmd/execute-stream.js
2025-09-21 20:29:15 +07:00

62 lines
1.3 KiB
JavaScript
Executable File

// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2015-2024 MariaDB Corporation Ab
'use strict';
const Execute = require('./execute');
const { Readable } = require('stream');
/**
* Protocol COM_STMT_EXECUTE with streaming events.
* see : https://mariadb.com/kb/en/com_stmt_execute/
*/
class ExecuteStream extends Execute {
constructor(cmdParam, connOpts, prepare, socket) {
super(
() => {},
() => {},
connOpts,
cmdParam,
prepare
);
this.socket = socket;
this.inStream = new Readable({
objectMode: true,
read: () => {
this.socket.resume();
}
});
this.on('fields', function (meta) {
this.inStream.emit('fields', meta);
});
this.on('error', function (err) {
this.inStream.emit('error', err);
});
this.on('close', function (err) {
this.inStream.emit('error', err);
});
this.on('end', function (err) {
if (err) this.inStream.emit('error', err);
this.socket.resume();
this.inStream.push(null);
});
this.inStream.close = function () {
this.handleNewRows = () => {};
this.socket.resume();
}.bind(this);
}
handleNewRows(row) {
if (!this.inStream.push(row)) {
this.socket.pause();
}
}
}
module.exports = ExecuteStream;