UNPKG

mariadb

Version:
62 lines (51 loc) 1.32 kB
// 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;