aboutsummaryrefslogtreecommitdiff
path: root/node_modules/mysql2/lib/packets/binlog_query_statusvars.js
diff options
context:
space:
mode:
authorJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
committerJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
commit080c5819d87b933816d724a83f3bf4f1686770a7 (patch)
tree4a2ccc68b27edf7d4cbc586c932cc7542b655e19 /node_modules/mysql2/lib/packets/binlog_query_statusvars.js
parent5ac7049a9d30733165cc212dee308163c2a14644 (diff)
parentd003b82235a9329f912522a2f70aa950dfce4998 (diff)
downloadLYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.tar.gz
LYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.zip
Merge branch 'master' of https://github.com/JoelHMikael/FoodJS
Updating remote changes
Diffstat (limited to 'node_modules/mysql2/lib/packets/binlog_query_statusvars.js')
-rw-r--r--node_modules/mysql2/lib/packets/binlog_query_statusvars.js115
1 files changed, 115 insertions, 0 deletions
diff --git a/node_modules/mysql2/lib/packets/binlog_query_statusvars.js b/node_modules/mysql2/lib/packets/binlog_query_statusvars.js
new file mode 100644
index 0000000..8e45fb5
--- /dev/null
+++ b/node_modules/mysql2/lib/packets/binlog_query_statusvars.js
@@ -0,0 +1,115 @@
+'use strict';
+
+// http://dev.mysql.com/doc/internals/en/query-event.html
+
+const keys = {
+ FLAGS2: 0,
+ SQL_MODE: 1,
+ CATALOG: 2,
+ AUTO_INCREMENT: 3,
+ CHARSET: 4,
+ TIME_ZONE: 5,
+ CATALOG_NZ: 6,
+ LC_TIME_NAMES: 7,
+ CHARSET_DATABASE: 8,
+ TABLE_MAP_FOR_UPDATE: 9,
+ MASTER_DATA_WRITTEN: 10,
+ INVOKERS: 11,
+ UPDATED_DB_NAMES: 12,
+ MICROSECONDS: 3
+};
+
+module.exports = function parseStatusVars(buffer) {
+ const result = {};
+ let offset = 0;
+ let key, length, prevOffset;
+ while (offset < buffer.length) {
+ key = buffer[offset++];
+ switch (key) {
+ case keys.FLAGS2:
+ result.flags = buffer.readUInt32LE(offset);
+ offset += 4;
+ break;
+ case keys.SQL_MODE:
+ // value is 8 bytes, but all dcumented flags are in first 4 bytes
+ result.sqlMode = buffer.readUInt32LE(offset);
+ offset += 8;
+ break;
+ case keys.CATALOG:
+ length = buffer[offset++];
+ result.catalog = buffer.toString('utf8', offset, offset + length);
+ offset += length + 1; // null byte after string
+ break;
+ case keys.CHARSET:
+ result.clientCharset = buffer.readUInt16LE(offset);
+ result.connectionCollation = buffer.readUInt16LE(offset + 2);
+ result.serverCharset = buffer.readUInt16LE(offset + 4);
+ offset += 6;
+ break;
+ case keys.TIME_ZONE:
+ length = buffer[offset++];
+ result.timeZone = buffer.toString('utf8', offset, offset + length);
+ offset += length; // no null byte
+ break;
+ case keys.CATALOG_NZ:
+ length = buffer[offset++];
+ result.catalogNz = buffer.toString('utf8', offset, offset + length);
+ offset += length; // no null byte
+ break;
+ case keys.LC_TIME_NAMES:
+ result.lcTimeNames = buffer.readUInt16LE(offset);
+ offset += 2;
+ break;
+ case keys.CHARSET_DATABASE:
+ result.schemaCharset = buffer.readUInt16LE(offset);
+ offset += 2;
+ break;
+ case keys.TABLE_MAP_FOR_UPDATE:
+ result.mapForUpdate1 = buffer.readUInt32LE(offset);
+ result.mapForUpdate2 = buffer.readUInt32LE(offset + 4);
+ offset += 8;
+ break;
+ case keys.MASTER_DATA_WRITTEN:
+ result.masterDataWritten = buffer.readUInt32LE(offset);
+ offset += 4;
+ break;
+ case keys.INVOKERS:
+ length = buffer[offset++];
+ result.invokerUsername = buffer.toString(
+ 'utf8',
+ offset,
+ offset + length
+ );
+ offset += length;
+ length = buffer[offset++];
+ result.invokerHostname = buffer.toString(
+ 'utf8',
+ offset,
+ offset + length
+ );
+ offset += length;
+ break;
+ case keys.UPDATED_DB_NAMES:
+ length = buffer[offset++];
+ // length - number of null-terminated strings
+ result.updatedDBs = []; // we'll store them as array here
+ for (; length; --length) {
+ prevOffset = offset;
+ // fast forward to null terminating byte
+ while (buffer[offset++] && offset < buffer.length) {
+ // empty body, everything inside while condition
+ }
+ result.updatedDBs.push(
+ buffer.toString('utf8', prevOffset, offset - 1)
+ );
+ }
+ break;
+ case keys.MICROSECONDS:
+ result.microseconds =
+ // REVIEW: INVALID UNKNOWN VARIABLE!
+ buffer.readInt16LE(offset) + (buffer[offset + 2] << 16);
+ offset += 3;
+ }
+ }
+ return result;
+};