@dbcube/core 3.0.8 → 3.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +15 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -768,6 +768,9 @@ var net = __toESM(require("net"));
|
|
|
768
768
|
var import_child_process2 = require("child_process");
|
|
769
769
|
var globalTcpServers = /* @__PURE__ */ new Map();
|
|
770
770
|
var globalTcpConnections = /* @__PURE__ */ new Map();
|
|
771
|
+
var queryCache = /* @__PURE__ */ new Map();
|
|
772
|
+
var cacheSize = 0;
|
|
773
|
+
var MAX_CACHE_SIZE = 500;
|
|
771
774
|
var QueryEngine = class {
|
|
772
775
|
name;
|
|
773
776
|
config;
|
|
@@ -884,11 +887,9 @@ var QueryEngine = class {
|
|
|
884
887
|
async executeWithTcpServer(args) {
|
|
885
888
|
const serverInfo = globalTcpServers.get(this.connectionId);
|
|
886
889
|
if (!serverInfo || !serverInfo.process || serverInfo.process.killed) {
|
|
887
|
-
console.log("\u{1F680} Starting TCP server for ultra-fast queries...");
|
|
888
890
|
await this.startTcpServer();
|
|
889
891
|
await this.waitForServerReady();
|
|
890
892
|
}
|
|
891
|
-
console.log("\u26A1 Using TCP server (ultra-fast)");
|
|
892
893
|
return this.sendTcpRequestFast(args);
|
|
893
894
|
}
|
|
894
895
|
async waitForServerReady() {
|
|
@@ -898,7 +899,6 @@ var QueryEngine = class {
|
|
|
898
899
|
if (await this.isServerResponding()) {
|
|
899
900
|
return;
|
|
900
901
|
}
|
|
901
|
-
console.log(`\u23F3 Waiting for TCP server to be ready... (${i + 1}/${maxRetries})`);
|
|
902
902
|
await this.sleep(retryDelay);
|
|
903
903
|
}
|
|
904
904
|
throw new Error("TCP server failed to become ready within timeout");
|
|
@@ -924,13 +924,23 @@ var QueryEngine = class {
|
|
|
924
924
|
sleep(ms) {
|
|
925
925
|
return new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
926
926
|
}
|
|
927
|
+
getCachedDML(dmlJson) {
|
|
928
|
+
if (queryCache.has(dmlJson)) {
|
|
929
|
+
return queryCache.get(dmlJson);
|
|
930
|
+
}
|
|
931
|
+
const parsed = JSON.parse(dmlJson);
|
|
932
|
+
if (cacheSize < MAX_CACHE_SIZE) {
|
|
933
|
+
queryCache.set(dmlJson, parsed);
|
|
934
|
+
cacheSize++;
|
|
935
|
+
}
|
|
936
|
+
return parsed;
|
|
937
|
+
}
|
|
927
938
|
async startTcpServer() {
|
|
928
939
|
await this.initializeBinary();
|
|
929
940
|
if (!this.binary) {
|
|
930
941
|
throw new Error("Binary not initialized");
|
|
931
942
|
}
|
|
932
943
|
this.tcpPort = await this.findAvailablePort(this.tcpPort);
|
|
933
|
-
console.log(`\u{1F310} Using port ${this.tcpPort} for TCP server`);
|
|
934
944
|
return new Promise((resolve5, reject) => {
|
|
935
945
|
const serverArgs = [...this.arguments, "--action", "server", "--port", this.tcpPort.toString()];
|
|
936
946
|
const serverProcess = (0, import_child_process2.spawn)(this.binary["query_engine"], serverArgs);
|
|
@@ -943,7 +953,6 @@ var QueryEngine = class {
|
|
|
943
953
|
}, 15e3);
|
|
944
954
|
serverProcess.stdout.on("data", (data) => {
|
|
945
955
|
const output = data.toString();
|
|
946
|
-
console.log(`[TCP Server] ${output.trim()}`);
|
|
947
956
|
if (output.includes("TCP Server listening on")) {
|
|
948
957
|
if (!started) {
|
|
949
958
|
started = true;
|
|
@@ -960,7 +969,6 @@ var QueryEngine = class {
|
|
|
960
969
|
console.error(`[TCP Server Error] ${data.toString().trim()}`);
|
|
961
970
|
});
|
|
962
971
|
serverProcess.on("close", (code) => {
|
|
963
|
-
console.log(`[TCP Server] Process exited with code ${code}`);
|
|
964
972
|
globalTcpServers.delete(this.connectionId);
|
|
965
973
|
});
|
|
966
974
|
serverProcess.on("error", (error) => {
|
|
@@ -1064,7 +1072,7 @@ var QueryEngine = class {
|
|
|
1064
1072
|
isResolved = true;
|
|
1065
1073
|
reject(new Error("TCP request timeout"));
|
|
1066
1074
|
}
|
|
1067
|
-
},
|
|
1075
|
+
}, 100);
|
|
1068
1076
|
const onData = (data) => {
|
|
1069
1077
|
responseBuffer += data.toString();
|
|
1070
1078
|
const match = responseBuffer.match(/PROCESS_RESPONSE:(\{.*\})/);
|
|
@@ -1264,7 +1272,6 @@ var QueryEngine = class {
|
|
|
1264
1272
|
}
|
|
1265
1273
|
const serverInfo = globalTcpServers.get(this.connectionId);
|
|
1266
1274
|
if (serverInfo && serverInfo.process && !serverInfo.process.killed) {
|
|
1267
|
-
console.log("\u{1F50C} Stopping TCP server...");
|
|
1268
1275
|
serverInfo.process.kill();
|
|
1269
1276
|
globalTcpServers.delete(this.connectionId);
|
|
1270
1277
|
return {
|