@deepagents/text2sql 7.0.2 → 7.1.0
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/README.md +3 -2
- package/dist/bin/sql.js +57 -32
- package/dist/index.js +793 -498
- package/dist/index.js.map +4 -4
- package/dist/lib/adapters/adapter.d.ts +23 -1
- package/dist/lib/adapters/adapter.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/bigquery-fk.d.ts +0 -11
- package/dist/lib/adapters/bigquery/bigquery-fk.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/bigquery-rows.d.ts +22 -0
- package/dist/lib/adapters/bigquery/bigquery-rows.d.ts.map +1 -0
- package/dist/lib/adapters/bigquery/bigquery.d.ts +1 -1
- package/dist/lib/adapters/bigquery/bigquery.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/constraint.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/index.d.ts +6 -13
- package/dist/lib/adapters/bigquery/index.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/index.js +244 -51
- package/dist/lib/adapters/bigquery/index.js.map +4 -4
- package/dist/lib/adapters/bigquery/indexes.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/row-count.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/table.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/view.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/clickhouse/clickhouse-rows.d.ts +7 -0
- package/dist/lib/adapters/clickhouse/clickhouse-rows.d.ts.map +1 -0
- package/dist/lib/adapters/clickhouse/clickhouse.d.ts +1 -1
- package/dist/lib/adapters/clickhouse/clickhouse.d.ts.map +1 -1
- package/dist/lib/adapters/clickhouse/constraint.clickhouse.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/clickhouse/index.js +133 -44
- package/dist/lib/adapters/clickhouse/index.js.map +4 -4
- package/dist/lib/adapters/clickhouse/indexes.clickhouse.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/clickhouse/info.clickhouse.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/clickhouse/row-count.clickhouse.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/clickhouse/table.clickhouse.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/clickhouse/view.clickhouse.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/duckdb/duckdb.d.ts +1 -1
- package/dist/lib/adapters/duckdb/duckdb.d.ts.map +1 -1
- package/dist/lib/adapters/duckdb/duckdb.groundings.d.ts.map +1 -1
- package/dist/lib/adapters/duckdb/index.d.ts +8 -10
- package/dist/lib/adapters/duckdb/index.d.ts.map +1 -1
- package/dist/lib/adapters/duckdb/index.js +1549 -1412
- package/dist/lib/adapters/duckdb/index.js.map +4 -4
- package/dist/lib/adapters/groundings/index.js.map +1 -1
- package/dist/lib/adapters/groundings/rows.d.ts +32 -0
- package/dist/lib/adapters/groundings/rows.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/column-stats.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/column-values.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/constraint.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/index.d.ts +2 -4
- package/dist/lib/adapters/mysql/index.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/index.js +230 -76
- package/dist/lib/adapters/mysql/index.js.map +4 -4
- package/dist/lib/adapters/mysql/indexes.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/info.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/mysql-rows.d.ts +11 -0
- package/dist/lib/adapters/mysql/mysql-rows.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/mysql.d.ts +1 -1
- package/dist/lib/adapters/mysql/mysql.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/row-count.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/table.mysql.grounding.d.ts +3 -2
- package/dist/lib/adapters/mysql/table.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/view.mysql.grounding.d.ts +2 -2
- package/dist/lib/adapters/mysql/view.mysql.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/column-stats.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/column-values.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/constraint.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/index.d.ts +2 -4
- package/dist/lib/adapters/postgres/index.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/index.js +266 -487
- package/dist/lib/adapters/postgres/index.js.map +4 -4
- package/dist/lib/adapters/postgres/indexes.postgres.grounding.d.ts +1 -5
- package/dist/lib/adapters/postgres/indexes.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/info.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/postgres-rows.d.ts +7 -0
- package/dist/lib/adapters/postgres/postgres-rows.d.ts.map +1 -0
- package/dist/lib/adapters/postgres/postgres.d.ts +6 -1
- package/dist/lib/adapters/postgres/postgres.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/row-count.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/table.postgres.grounding.d.ts +5 -4
- package/dist/lib/adapters/postgres/table.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/view.postgres.grounding.d.ts +3 -3
- package/dist/lib/adapters/postgres/view.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/definitions.posthog.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/index.d.ts +4 -5
- package/dist/lib/adapters/posthog/index.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/index.js +349 -287
- package/dist/lib/adapters/posthog/index.js.map +4 -4
- package/dist/lib/adapters/posthog/posthog.d.ts +2 -2
- package/dist/lib/adapters/posthog/posthog.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/posthog.sql-policy.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/schema.posthog.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/transport.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/types.d.ts +16 -6
- package/dist/lib/adapters/posthog/types.d.ts.map +1 -1
- package/dist/lib/adapters/spreadsheet/index.js +113 -34
- package/dist/lib/adapters/spreadsheet/index.js.map +4 -4
- package/dist/lib/adapters/sqlite/column-stats.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/column-values.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/constraint.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/index.js +136 -49
- package/dist/lib/adapters/sqlite/index.js.map +4 -4
- package/dist/lib/adapters/sqlite/indexes.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/info.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/row-count.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/sqlite-rows.d.ts +41 -0
- package/dist/lib/adapters/sqlite/sqlite-rows.d.ts.map +1 -0
- package/dist/lib/adapters/sqlite/sqlite.d.ts +1 -1
- package/dist/lib/adapters/sqlite/sqlite.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/table.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/view.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/column-stats.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/column-values.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/constraint.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/index.d.ts +2 -4
- package/dist/lib/adapters/sqlserver/index.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/index.js +223 -455
- package/dist/lib/adapters/sqlserver/index.js.map +4 -4
- package/dist/lib/adapters/sqlserver/indexes.sqlserver.grounding.d.ts +1 -5
- package/dist/lib/adapters/sqlserver/indexes.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/info.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/row-count.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/sqlserver-rows.d.ts +7 -0
- package/dist/lib/adapters/sqlserver/sqlserver-rows.d.ts.map +1 -0
- package/dist/lib/adapters/sqlserver/sqlserver.d.ts +6 -1
- package/dist/lib/adapters/sqlserver/sqlserver.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/table.sqlserver.grounding.d.ts +4 -3
- package/dist/lib/adapters/sqlserver/table.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/view.sqlserver.grounding.d.ts +3 -3
- package/dist/lib/adapters/sqlserver/view.sqlserver.grounding.d.ts.map +1 -1
- package/dist/lib/agents/sql-transform-plugins.d.ts.map +1 -1
- package/dist/lib/checkpoint.d.ts +34 -21
- package/dist/lib/checkpoint.d.ts.map +1 -1
- package/dist/lib/file-cache.d.ts +6 -1
- package/dist/lib/file-cache.d.ts.map +1 -1
- package/dist/lib/fs/columns.d.ts +14 -0
- package/dist/lib/fs/columns.d.ts.map +1 -0
- package/dist/lib/fs/mssql/mssql-fs.d.ts +4 -4
- package/dist/lib/fs/mssql/mssql-fs.d.ts.map +1 -1
- package/dist/lib/fs/postgres/postgres-fs.d.ts +4 -4
- package/dist/lib/fs/postgres/postgres-fs.d.ts.map +1 -1
- package/dist/lib/fs/sqlite/sqlite-fs.d.ts +4 -4
- package/dist/lib/fs/sqlite/sqlite-fs.d.ts.map +1 -1
- package/dist/lib/index-cache.d.ts +4 -3
- package/dist/lib/index-cache.d.ts.map +1 -1
- package/dist/lib/sql.d.ts.map +1 -1
- package/dist/lib/synthesis/decorators/deduplicated-producer.d.ts +1 -2
- package/dist/lib/synthesis/decorators/deduplicated-producer.d.ts.map +1 -1
- package/dist/lib/synthesis/decorators/filtered-producer.d.ts +0 -2
- package/dist/lib/synthesis/decorators/filtered-producer.d.ts.map +1 -1
- package/dist/lib/synthesis/decorators/validated-producer.d.ts +1 -3
- package/dist/lib/synthesis/decorators/validated-producer.d.ts.map +1 -1
- package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts.map +1 -1
- package/dist/lib/synthesis/extractors/message-extractor.d.ts.map +1 -1
- package/dist/lib/synthesis/extractors/tool-input.d.ts +6 -0
- package/dist/lib/synthesis/extractors/tool-input.d.ts.map +1 -0
- package/dist/lib/synthesis/index.js +124 -114
- package/dist/lib/synthesis/index.js.map +4 -4
- package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts +0 -2
- package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts.map +1 -1
- package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts +0 -3
- package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts.map +1 -1
- package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts +0 -2
- package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// packages/text2sql/src/lib/adapters/adapter.ts
|
|
2
2
|
import { format as formatSql } from "sql-formatter";
|
|
3
|
+
import { z } from "zod";
|
|
3
4
|
|
|
4
5
|
// packages/text2sql/src/lib/agents/exceptions.ts
|
|
5
6
|
var sqlValidationMarker = /* @__PURE__ */ Symbol("SQLValidationError");
|
|
@@ -172,6 +173,16 @@ function createGroundingContext(options = {}) {
|
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
// packages/text2sql/src/lib/adapters/adapter.ts
|
|
176
|
+
function groundingFor(adapterType, create) {
|
|
177
|
+
return (adapter) => {
|
|
178
|
+
if (!(adapter instanceof adapterType)) {
|
|
179
|
+
throw new Error(
|
|
180
|
+
`A ${adapterType.name} grounding needs a ${adapterType.name} adapter, not ${adapter.constructor.name}.`
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
return create(adapter);
|
|
184
|
+
};
|
|
185
|
+
}
|
|
175
186
|
var Adapter = class {
|
|
176
187
|
#policyAnalyzer;
|
|
177
188
|
/**
|
|
@@ -432,6 +443,40 @@ var Adapter = class {
|
|
|
432
443
|
}
|
|
433
444
|
return decoded;
|
|
434
445
|
}
|
|
446
|
+
/**
|
|
447
|
+
* Run an introspection query and check every row against `row`, the shape
|
|
448
|
+
* the driver returns for that query. A row of any other shape throws.
|
|
449
|
+
*/
|
|
450
|
+
async runQuery(sql, row) {
|
|
451
|
+
const rows = z.array(row).safeParse(await this.queryRows(sql));
|
|
452
|
+
if (!rows.success) {
|
|
453
|
+
throw new Error(
|
|
454
|
+
`${this.constructor.name} introspection query returned rows of an unexpected shape:
|
|
455
|
+
${z.prettifyError(rows.error)}
|
|
456
|
+
SQL: ${sql.trim()}`,
|
|
457
|
+
{ cause: rows.error }
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
return rows.data;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* The rows in a driver's execute() result: the result itself when it is an
|
|
464
|
+
* array, otherwise the first array found at one of `paths` (dot-separated,
|
|
465
|
+
* so `recordsets.0` reads `result.recordsets[0]`).
|
|
466
|
+
*/
|
|
467
|
+
rowsFrom(result, paths) {
|
|
468
|
+
if (Array.isArray(result)) return result;
|
|
469
|
+
for (const path of paths) {
|
|
470
|
+
const rows = path.split(".").reduce(
|
|
471
|
+
(value, key) => typeof value === "object" && value !== null ? Reflect.get(value, key) : void 0,
|
|
472
|
+
result
|
|
473
|
+
);
|
|
474
|
+
if (Array.isArray(rows)) return rows;
|
|
475
|
+
}
|
|
476
|
+
throw new Error(
|
|
477
|
+
`${this.constructor.name} execute() must return an array of rows or an object holding one at ${paths.map((path) => `result.${path}`).join(", ")}.`
|
|
478
|
+
);
|
|
479
|
+
}
|
|
435
480
|
/**
|
|
436
481
|
* Convert unknown database value to number.
|
|
437
482
|
* Handles number, bigint, and string types.
|
|
@@ -992,6 +1037,34 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
992
1037
|
};
|
|
993
1038
|
|
|
994
1039
|
// packages/text2sql/src/lib/adapters/mysql/column-stats.mysql.grounding.ts
|
|
1040
|
+
import { z as z4 } from "zod";
|
|
1041
|
+
|
|
1042
|
+
// packages/text2sql/src/lib/adapters/groundings/rows.ts
|
|
1043
|
+
import { z as z2 } from "zod";
|
|
1044
|
+
var nameRow = z2.object({ name: z2.string() });
|
|
1045
|
+
var versionRow = z2.object({ version: z2.string() });
|
|
1046
|
+
var databaseRow = z2.object({ db: z2.string() });
|
|
1047
|
+
var viewDefinitionRow = z2.object({
|
|
1048
|
+
definition: z2.string().nullable()
|
|
1049
|
+
});
|
|
1050
|
+
var distinctValueRow = z2.object({ value: z2.unknown() });
|
|
1051
|
+
var textValueRow = z2.object({ value: z2.string() });
|
|
1052
|
+
var numericValue = z2.union([z2.number(), z2.bigint(), z2.string()]);
|
|
1053
|
+
|
|
1054
|
+
// packages/text2sql/src/lib/adapters/mysql/mysql-rows.ts
|
|
1055
|
+
import { z as z3 } from "zod";
|
|
1056
|
+
var currentDatabaseRow = z3.object({ db: z3.string().nullable() });
|
|
1057
|
+
var columnRow = z3.object({
|
|
1058
|
+
COLUMN_NAME: z3.string().nullable(),
|
|
1059
|
+
DATA_TYPE: z3.string().nullable()
|
|
1060
|
+
});
|
|
1061
|
+
|
|
1062
|
+
// packages/text2sql/src/lib/adapters/mysql/column-stats.mysql.grounding.ts
|
|
1063
|
+
var statsRow = z4.object({
|
|
1064
|
+
min_value: z4.string().nullable(),
|
|
1065
|
+
max_value: z4.string().nullable(),
|
|
1066
|
+
null_fraction: numericValue.nullable()
|
|
1067
|
+
});
|
|
995
1068
|
var MysqlColumnStatsGrounding = class extends ColumnStatsGrounding {
|
|
996
1069
|
#adapter;
|
|
997
1070
|
constructor(adapter, config = {}) {
|
|
@@ -1007,13 +1080,16 @@ var MysqlColumnStatsGrounding = class extends ColumnStatsGrounding {
|
|
|
1007
1080
|
const tableIdentifier = `${this.#adapter.quoteIdentifier(database)}.${this.#adapter.quoteIdentifier(table2)}`;
|
|
1008
1081
|
const columnIdentifier = this.#adapter.quoteIdentifier(column2.name);
|
|
1009
1082
|
try {
|
|
1010
|
-
const rows = await this.#adapter.runQuery(
|
|
1083
|
+
const rows = await this.#adapter.runQuery(
|
|
1084
|
+
`
|
|
1011
1085
|
SELECT
|
|
1012
1086
|
CAST(MIN(${columnIdentifier}) AS CHAR) AS min_value,
|
|
1013
1087
|
CAST(MAX(${columnIdentifier}) AS CHAR) AS max_value,
|
|
1014
1088
|
AVG(CASE WHEN ${columnIdentifier} IS NULL THEN 1.0 ELSE 0.0 END) AS null_fraction
|
|
1015
1089
|
FROM ${tableIdentifier}
|
|
1016
|
-
|
|
1090
|
+
`,
|
|
1091
|
+
statsRow
|
|
1092
|
+
);
|
|
1017
1093
|
if (!rows.length) {
|
|
1018
1094
|
return void 0;
|
|
1019
1095
|
}
|
|
@@ -1056,13 +1132,16 @@ var MysqlColumnStatsGrounding = class extends ColumnStatsGrounding {
|
|
|
1056
1132
|
}
|
|
1057
1133
|
async #getCurrentDatabase() {
|
|
1058
1134
|
const rows = await this.#adapter.runQuery(
|
|
1059
|
-
"SELECT DATABASE() AS db"
|
|
1135
|
+
"SELECT DATABASE() AS db",
|
|
1136
|
+
currentDatabaseRow
|
|
1060
1137
|
);
|
|
1061
1138
|
return rows[0]?.db ?? "";
|
|
1062
1139
|
}
|
|
1063
1140
|
};
|
|
1064
1141
|
|
|
1065
1142
|
// packages/text2sql/src/lib/adapters/mysql/column-values.mysql.grounding.ts
|
|
1143
|
+
import { z as z5 } from "zod";
|
|
1144
|
+
var columnTypeRow = z5.object({ COLUMN_TYPE: z5.string().nullable() });
|
|
1066
1145
|
var MysqlColumnValuesGrounding = class extends ColumnValuesGrounding {
|
|
1067
1146
|
#adapter;
|
|
1068
1147
|
constructor(adapter, config = {}) {
|
|
@@ -1075,13 +1154,16 @@ var MysqlColumnValuesGrounding = class extends ColumnValuesGrounding {
|
|
|
1075
1154
|
async collectEnumValues(tableName, column2) {
|
|
1076
1155
|
const { schema, table: table2 } = this.#adapter.parseTableName(tableName);
|
|
1077
1156
|
const database = schema || await this.#getCurrentDatabase();
|
|
1078
|
-
const rows = await this.#adapter.runQuery(
|
|
1157
|
+
const rows = await this.#adapter.runQuery(
|
|
1158
|
+
`
|
|
1079
1159
|
SELECT COLUMN_TYPE
|
|
1080
1160
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
1081
1161
|
WHERE TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
1082
1162
|
AND TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1083
1163
|
AND COLUMN_NAME = '${this.#adapter.escapeString(column2.name)}'
|
|
1084
|
-
|
|
1164
|
+
`,
|
|
1165
|
+
columnTypeRow
|
|
1166
|
+
);
|
|
1085
1167
|
const columnType = rows[0]?.COLUMN_TYPE;
|
|
1086
1168
|
if (!columnType) return void 0;
|
|
1087
1169
|
const enumMatch = columnType.match(/^enum\((.+)\)$/i);
|
|
@@ -1098,12 +1180,15 @@ var MysqlColumnValuesGrounding = class extends ColumnValuesGrounding {
|
|
|
1098
1180
|
const columnIdentifier = this.#adapter.quoteIdentifier(column2.name);
|
|
1099
1181
|
const limit = this.lowCardinalityLimit + 1;
|
|
1100
1182
|
try {
|
|
1101
|
-
const rows = await this.#adapter.runQuery(
|
|
1183
|
+
const rows = await this.#adapter.runQuery(
|
|
1184
|
+
`
|
|
1102
1185
|
SELECT DISTINCT ${columnIdentifier} AS value
|
|
1103
1186
|
FROM ${tableIdentifier}
|
|
1104
1187
|
WHERE ${columnIdentifier} IS NOT NULL
|
|
1105
1188
|
LIMIT ${limit}
|
|
1106
|
-
|
|
1189
|
+
`,
|
|
1190
|
+
distinctValueRow
|
|
1191
|
+
);
|
|
1107
1192
|
if (!rows.length || rows.length > this.lowCardinalityLimit) {
|
|
1108
1193
|
return void 0;
|
|
1109
1194
|
}
|
|
@@ -1158,13 +1243,36 @@ var MysqlColumnValuesGrounding = class extends ColumnValuesGrounding {
|
|
|
1158
1243
|
}
|
|
1159
1244
|
async #getCurrentDatabase() {
|
|
1160
1245
|
const rows = await this.#adapter.runQuery(
|
|
1161
|
-
"SELECT DATABASE() AS db"
|
|
1246
|
+
"SELECT DATABASE() AS db",
|
|
1247
|
+
currentDatabaseRow
|
|
1162
1248
|
);
|
|
1163
1249
|
return rows[0]?.db ?? "";
|
|
1164
1250
|
}
|
|
1165
1251
|
};
|
|
1166
1252
|
|
|
1167
1253
|
// packages/text2sql/src/lib/adapters/mysql/constraint.mysql.grounding.ts
|
|
1254
|
+
import { z as z6 } from "zod";
|
|
1255
|
+
var constraintRow = z6.object({
|
|
1256
|
+
CONSTRAINT_NAME: z6.string().nullable(),
|
|
1257
|
+
CONSTRAINT_TYPE: z6.string().nullable(),
|
|
1258
|
+
COLUMN_NAME: z6.string().nullable(),
|
|
1259
|
+
REFERENCED_TABLE_SCHEMA: z6.string().nullable(),
|
|
1260
|
+
REFERENCED_TABLE_NAME: z6.string().nullable(),
|
|
1261
|
+
REFERENCED_COLUMN_NAME: z6.string().nullable()
|
|
1262
|
+
});
|
|
1263
|
+
var columnConstraintRow = z6.object({
|
|
1264
|
+
COLUMN_NAME: z6.string().nullable(),
|
|
1265
|
+
IS_NULLABLE: z6.string().nullable(),
|
|
1266
|
+
COLUMN_DEFAULT: z6.string().nullable()
|
|
1267
|
+
});
|
|
1268
|
+
var checkConstraintRow = z6.object({
|
|
1269
|
+
CONSTRAINT_NAME: z6.string().nullable(),
|
|
1270
|
+
CHECK_CLAUSE: z6.string().nullable()
|
|
1271
|
+
});
|
|
1272
|
+
var checkTableRow = z6.object({
|
|
1273
|
+
CONSTRAINT_NAME: z6.string(),
|
|
1274
|
+
TABLE_NAME: z6.string()
|
|
1275
|
+
});
|
|
1168
1276
|
var MysqlConstraintGrounding = class extends ConstraintGrounding {
|
|
1169
1277
|
#adapter;
|
|
1170
1278
|
constructor(adapter, config = {}) {
|
|
@@ -1175,7 +1283,8 @@ var MysqlConstraintGrounding = class extends ConstraintGrounding {
|
|
|
1175
1283
|
const { schema, table: table2 } = this.#adapter.parseTableName(tableName);
|
|
1176
1284
|
const database = schema || await this.#getCurrentDatabase();
|
|
1177
1285
|
const constraints2 = [];
|
|
1178
|
-
const constraintRows = await this.#adapter.runQuery(
|
|
1286
|
+
const constraintRows = await this.#adapter.runQuery(
|
|
1287
|
+
`
|
|
1179
1288
|
SELECT
|
|
1180
1289
|
tc.CONSTRAINT_NAME,
|
|
1181
1290
|
tc.CONSTRAINT_TYPE,
|
|
@@ -1192,7 +1301,9 @@ var MysqlConstraintGrounding = class extends ConstraintGrounding {
|
|
|
1192
1301
|
AND tc.TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1193
1302
|
AND tc.CONSTRAINT_TYPE IN ('PRIMARY KEY', 'UNIQUE', 'FOREIGN KEY')
|
|
1194
1303
|
ORDER BY tc.CONSTRAINT_NAME, kcu.ORDINAL_POSITION
|
|
1195
|
-
|
|
1304
|
+
`,
|
|
1305
|
+
constraintRow
|
|
1306
|
+
);
|
|
1196
1307
|
const constraintMap = /* @__PURE__ */ new Map();
|
|
1197
1308
|
for (const row of constraintRows) {
|
|
1198
1309
|
if (!row.CONSTRAINT_NAME || !row.COLUMN_NAME) continue;
|
|
@@ -1228,12 +1339,15 @@ var MysqlConstraintGrounding = class extends ConstraintGrounding {
|
|
|
1228
1339
|
referencedColumns: data.referencedColumns
|
|
1229
1340
|
});
|
|
1230
1341
|
}
|
|
1231
|
-
const columnRows = await this.#adapter.runQuery(
|
|
1342
|
+
const columnRows = await this.#adapter.runQuery(
|
|
1343
|
+
`
|
|
1232
1344
|
SELECT COLUMN_NAME, IS_NULLABLE, COLUMN_DEFAULT
|
|
1233
1345
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
1234
1346
|
WHERE TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
1235
1347
|
AND TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1236
|
-
|
|
1348
|
+
`,
|
|
1349
|
+
columnConstraintRow
|
|
1350
|
+
);
|
|
1237
1351
|
const pkConstraint = constraints2.find((c) => c.type === "PRIMARY_KEY");
|
|
1238
1352
|
const pkColumns = new Set(pkConstraint?.columns ?? []);
|
|
1239
1353
|
for (const row of columnRows) {
|
|
@@ -1255,18 +1369,24 @@ var MysqlConstraintGrounding = class extends ConstraintGrounding {
|
|
|
1255
1369
|
}
|
|
1256
1370
|
}
|
|
1257
1371
|
try {
|
|
1258
|
-
const checkRows = await this.#adapter.runQuery(
|
|
1372
|
+
const checkRows = await this.#adapter.runQuery(
|
|
1373
|
+
`
|
|
1259
1374
|
SELECT CONSTRAINT_NAME, CHECK_CLAUSE
|
|
1260
1375
|
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
|
|
1261
1376
|
WHERE CONSTRAINT_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
1262
|
-
|
|
1263
|
-
|
|
1377
|
+
`,
|
|
1378
|
+
checkConstraintRow
|
|
1379
|
+
);
|
|
1380
|
+
const checkTableRows = await this.#adapter.runQuery(
|
|
1381
|
+
`
|
|
1264
1382
|
SELECT CONSTRAINT_NAME, TABLE_NAME
|
|
1265
1383
|
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
|
|
1266
1384
|
WHERE TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
1267
1385
|
AND TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1268
1386
|
AND CONSTRAINT_TYPE = 'CHECK'
|
|
1269
|
-
|
|
1387
|
+
`,
|
|
1388
|
+
checkTableRow
|
|
1389
|
+
);
|
|
1270
1390
|
const checkTableMap = new Map(
|
|
1271
1391
|
checkTableRows.map((r) => [r.CONSTRAINT_NAME, r.TABLE_NAME])
|
|
1272
1392
|
);
|
|
@@ -1297,13 +1417,22 @@ var MysqlConstraintGrounding = class extends ConstraintGrounding {
|
|
|
1297
1417
|
}
|
|
1298
1418
|
async #getCurrentDatabase() {
|
|
1299
1419
|
const rows = await this.#adapter.runQuery(
|
|
1300
|
-
"SELECT DATABASE() AS db"
|
|
1420
|
+
"SELECT DATABASE() AS db",
|
|
1421
|
+
currentDatabaseRow
|
|
1301
1422
|
);
|
|
1302
1423
|
return rows[0]?.db ?? "";
|
|
1303
1424
|
}
|
|
1304
1425
|
};
|
|
1305
1426
|
|
|
1306
1427
|
// packages/text2sql/src/lib/adapters/mysql/indexes.mysql.grounding.ts
|
|
1428
|
+
import { z as z7 } from "zod";
|
|
1429
|
+
var indexRow = z7.object({
|
|
1430
|
+
INDEX_NAME: z7.string().nullable(),
|
|
1431
|
+
COLUMN_NAME: z7.string().nullable(),
|
|
1432
|
+
NON_UNIQUE: numericValue.nullable(),
|
|
1433
|
+
INDEX_TYPE: z7.string().nullable(),
|
|
1434
|
+
SEQ_IN_INDEX: numericValue.nullable()
|
|
1435
|
+
});
|
|
1307
1436
|
var MysqlIndexesGrounding = class extends IndexesGrounding {
|
|
1308
1437
|
#adapter;
|
|
1309
1438
|
constructor(adapter, config = {}) {
|
|
@@ -1313,7 +1442,8 @@ var MysqlIndexesGrounding = class extends IndexesGrounding {
|
|
|
1313
1442
|
async getIndexes(tableName) {
|
|
1314
1443
|
const { schema, table: table2 } = this.#adapter.parseTableName(tableName);
|
|
1315
1444
|
const database = schema || await this.#getCurrentDatabase();
|
|
1316
|
-
const rows = await this.#adapter.runQuery(
|
|
1445
|
+
const rows = await this.#adapter.runQuery(
|
|
1446
|
+
`
|
|
1317
1447
|
SELECT
|
|
1318
1448
|
INDEX_NAME,
|
|
1319
1449
|
COLUMN_NAME,
|
|
@@ -1324,7 +1454,9 @@ var MysqlIndexesGrounding = class extends IndexesGrounding {
|
|
|
1324
1454
|
WHERE TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
1325
1455
|
AND TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1326
1456
|
ORDER BY INDEX_NAME, SEQ_IN_INDEX
|
|
1327
|
-
|
|
1457
|
+
`,
|
|
1458
|
+
indexRow
|
|
1459
|
+
);
|
|
1328
1460
|
const indexMap = /* @__PURE__ */ new Map();
|
|
1329
1461
|
for (const row of rows) {
|
|
1330
1462
|
if (!row.INDEX_NAME) continue;
|
|
@@ -1333,7 +1465,7 @@ var MysqlIndexesGrounding = class extends IndexesGrounding {
|
|
|
1333
1465
|
index2 = {
|
|
1334
1466
|
name: row.INDEX_NAME,
|
|
1335
1467
|
columns: [],
|
|
1336
|
-
unique: row.NON_UNIQUE === 0,
|
|
1468
|
+
unique: this.#adapter.toNumber(row.NON_UNIQUE) === 0,
|
|
1337
1469
|
type: row.INDEX_TYPE ?? void 0
|
|
1338
1470
|
};
|
|
1339
1471
|
indexMap.set(row.INDEX_NAME, index2);
|
|
@@ -1346,7 +1478,8 @@ var MysqlIndexesGrounding = class extends IndexesGrounding {
|
|
|
1346
1478
|
}
|
|
1347
1479
|
async #getCurrentDatabase() {
|
|
1348
1480
|
const rows = await this.#adapter.runQuery(
|
|
1349
|
-
"SELECT DATABASE() AS db"
|
|
1481
|
+
"SELECT DATABASE() AS db",
|
|
1482
|
+
currentDatabaseRow
|
|
1350
1483
|
);
|
|
1351
1484
|
return rows[0]?.db ?? "";
|
|
1352
1485
|
}
|
|
@@ -1361,10 +1494,8 @@ var MysqlInfoGrounding = class extends InfoGrounding {
|
|
|
1361
1494
|
}
|
|
1362
1495
|
async collectInfo() {
|
|
1363
1496
|
const [versionRows, dbRows] = await Promise.all([
|
|
1364
|
-
this.#adapter.runQuery(
|
|
1365
|
-
|
|
1366
|
-
),
|
|
1367
|
-
this.#adapter.runQuery("SELECT DATABASE() AS db")
|
|
1497
|
+
this.#adapter.runQuery("SELECT VERSION() AS version", versionRow),
|
|
1498
|
+
this.#adapter.runQuery("SELECT DATABASE() AS db", currentDatabaseRow)
|
|
1368
1499
|
]);
|
|
1369
1500
|
const version = versionRows[0]?.version;
|
|
1370
1501
|
const database = dbRows[0]?.db ?? void 0;
|
|
@@ -1823,9 +1954,6 @@ var Mysql = class extends Adapter {
|
|
|
1823
1954
|
return JSON.stringify(formatMysqlError(sql, error));
|
|
1824
1955
|
}
|
|
1825
1956
|
}
|
|
1826
|
-
async runQuery(sql) {
|
|
1827
|
-
return this.#runIntrospectionQuery(sql);
|
|
1828
|
-
}
|
|
1829
1957
|
quoteIdentifier(name) {
|
|
1830
1958
|
return `\`${name.replace(/`/g, "``")}\``;
|
|
1831
1959
|
}
|
|
@@ -1844,24 +1972,18 @@ var Mysql = class extends Adapter {
|
|
|
1844
1972
|
get databases() {
|
|
1845
1973
|
return this.#options.databases;
|
|
1846
1974
|
}
|
|
1847
|
-
async
|
|
1975
|
+
async queryRows(sql) {
|
|
1848
1976
|
const result = await this.#options.execute(sql);
|
|
1849
|
-
if (Array.isArray(result)) {
|
|
1850
|
-
|
|
1851
|
-
return result[0];
|
|
1852
|
-
}
|
|
1853
|
-
return result;
|
|
1854
|
-
}
|
|
1855
|
-
if (result && typeof result === "object" && "rows" in result && Array.isArray(result.rows)) {
|
|
1856
|
-
return result.rows;
|
|
1977
|
+
if (Array.isArray(result) && result.length >= 1 && Array.isArray(result[0]) && (result.length === 1 || result.length === 2 && !Array.isArray(result[1]?.[0]))) {
|
|
1978
|
+
return result[0];
|
|
1857
1979
|
}
|
|
1858
|
-
|
|
1859
|
-
"Mysql adapter execute() must return an array of rows or an object with a rows array when introspecting."
|
|
1860
|
-
);
|
|
1980
|
+
return this.rowsFrom(result, ["rows"]);
|
|
1861
1981
|
}
|
|
1862
1982
|
};
|
|
1863
1983
|
|
|
1864
1984
|
// packages/text2sql/src/lib/adapters/mysql/row-count.mysql.grounding.ts
|
|
1985
|
+
import { z as z8 } from "zod";
|
|
1986
|
+
var countRow = z8.object({ count: numericValue });
|
|
1865
1987
|
var MysqlRowCountGrounding = class extends RowCountGrounding {
|
|
1866
1988
|
#adapter;
|
|
1867
1989
|
constructor(adapter, config = {}) {
|
|
@@ -1873,34 +1995,35 @@ var MysqlRowCountGrounding = class extends RowCountGrounding {
|
|
|
1873
1995
|
const database = schema || await this.#getCurrentDatabase();
|
|
1874
1996
|
const tableIdentifier = `${this.#adapter.quoteIdentifier(database)}.${this.#adapter.quoteIdentifier(table2)}`;
|
|
1875
1997
|
try {
|
|
1876
|
-
const rows = await this.#adapter.runQuery(
|
|
1877
|
-
|
|
1998
|
+
const rows = await this.#adapter.runQuery(
|
|
1999
|
+
`SELECT COUNT(*) AS count FROM ${tableIdentifier}`,
|
|
2000
|
+
countRow
|
|
2001
|
+
);
|
|
2002
|
+
return this.#adapter.toNumber(rows[0]?.count);
|
|
1878
2003
|
} catch {
|
|
1879
2004
|
return void 0;
|
|
1880
2005
|
}
|
|
1881
2006
|
}
|
|
1882
|
-
#toNumber(value) {
|
|
1883
|
-
if (typeof value === "number" && Number.isFinite(value)) {
|
|
1884
|
-
return value;
|
|
1885
|
-
}
|
|
1886
|
-
if (typeof value === "bigint") {
|
|
1887
|
-
return Number(value);
|
|
1888
|
-
}
|
|
1889
|
-
if (typeof value === "string" && value.trim() !== "") {
|
|
1890
|
-
const parsed = Number(value);
|
|
1891
|
-
return Number.isFinite(parsed) ? parsed : void 0;
|
|
1892
|
-
}
|
|
1893
|
-
return void 0;
|
|
1894
|
-
}
|
|
1895
2007
|
async #getCurrentDatabase() {
|
|
1896
2008
|
const rows = await this.#adapter.runQuery(
|
|
1897
|
-
"SELECT DATABASE() AS db"
|
|
2009
|
+
"SELECT DATABASE() AS db",
|
|
2010
|
+
currentDatabaseRow
|
|
1898
2011
|
);
|
|
1899
2012
|
return rows[0]?.db ?? "";
|
|
1900
2013
|
}
|
|
1901
2014
|
};
|
|
1902
2015
|
|
|
1903
2016
|
// packages/text2sql/src/lib/adapters/mysql/table.mysql.grounding.ts
|
|
2017
|
+
import { z as z9 } from "zod";
|
|
2018
|
+
var relationshipRow = z9.object({
|
|
2019
|
+
CONSTRAINT_NAME: z9.string().nullable(),
|
|
2020
|
+
TABLE_SCHEMA: z9.string().nullable(),
|
|
2021
|
+
TABLE_NAME: z9.string().nullable(),
|
|
2022
|
+
COLUMN_NAME: z9.string().nullable(),
|
|
2023
|
+
REFERENCED_TABLE_SCHEMA: z9.string().nullable(),
|
|
2024
|
+
REFERENCED_TABLE_NAME: z9.string().nullable(),
|
|
2025
|
+
REFERENCED_COLUMN_NAME: z9.string().nullable()
|
|
2026
|
+
});
|
|
1904
2027
|
var MysqlTableGrounding = class extends TableGrounding {
|
|
1905
2028
|
#adapter;
|
|
1906
2029
|
#databases;
|
|
@@ -1910,25 +2033,31 @@ var MysqlTableGrounding = class extends TableGrounding {
|
|
|
1910
2033
|
this.#databases = config.databases ?? adapter.databases;
|
|
1911
2034
|
}
|
|
1912
2035
|
async getAllTableNames() {
|
|
1913
|
-
const rows = await this.#adapter.runQuery(
|
|
2036
|
+
const rows = await this.#adapter.runQuery(
|
|
2037
|
+
`
|
|
1914
2038
|
SELECT DISTINCT CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) AS name
|
|
1915
2039
|
FROM INFORMATION_SCHEMA.TABLES
|
|
1916
2040
|
WHERE TABLE_TYPE = 'BASE TABLE'
|
|
1917
2041
|
${this.#buildDatabaseFilter("TABLE_SCHEMA")}
|
|
1918
2042
|
ORDER BY name
|
|
1919
|
-
|
|
2043
|
+
`,
|
|
2044
|
+
nameRow
|
|
2045
|
+
);
|
|
1920
2046
|
return rows.map((r) => r.name);
|
|
1921
2047
|
}
|
|
1922
2048
|
async getTable(tableName) {
|
|
1923
2049
|
const { schema, table: table2 } = this.#adapter.parseTableName(tableName);
|
|
1924
2050
|
const database = schema || await this.#getCurrentDatabase();
|
|
1925
|
-
const columns = await this.#adapter.runQuery(
|
|
2051
|
+
const columns = await this.#adapter.runQuery(
|
|
2052
|
+
`
|
|
1926
2053
|
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_TYPE
|
|
1927
2054
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
1928
2055
|
WHERE TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
1929
2056
|
AND TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1930
2057
|
ORDER BY ORDINAL_POSITION
|
|
1931
|
-
|
|
2058
|
+
`,
|
|
2059
|
+
columnRow
|
|
2060
|
+
);
|
|
1932
2061
|
return {
|
|
1933
2062
|
name: tableName,
|
|
1934
2063
|
schema: database,
|
|
@@ -1942,7 +2071,8 @@ var MysqlTableGrounding = class extends TableGrounding {
|
|
|
1942
2071
|
async findOutgoingRelations(tableName) {
|
|
1943
2072
|
const { schema, table: table2 } = this.#adapter.parseTableName(tableName);
|
|
1944
2073
|
const database = schema || await this.#getCurrentDatabase();
|
|
1945
|
-
const rows = await this.#adapter.runQuery(
|
|
2074
|
+
const rows = await this.#adapter.runQuery(
|
|
2075
|
+
`
|
|
1946
2076
|
SELECT
|
|
1947
2077
|
kcu.CONSTRAINT_NAME,
|
|
1948
2078
|
kcu.TABLE_SCHEMA,
|
|
@@ -1956,13 +2086,16 @@ var MysqlTableGrounding = class extends TableGrounding {
|
|
|
1956
2086
|
AND kcu.TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1957
2087
|
AND kcu.REFERENCED_TABLE_NAME IS NOT NULL
|
|
1958
2088
|
ORDER BY kcu.CONSTRAINT_NAME, kcu.ORDINAL_POSITION
|
|
1959
|
-
|
|
2089
|
+
`,
|
|
2090
|
+
relationshipRow
|
|
2091
|
+
);
|
|
1960
2092
|
return this.#groupRelationships(rows);
|
|
1961
2093
|
}
|
|
1962
2094
|
async findIncomingRelations(tableName) {
|
|
1963
2095
|
const { schema, table: table2 } = this.#adapter.parseTableName(tableName);
|
|
1964
2096
|
const database = schema || await this.#getCurrentDatabase();
|
|
1965
|
-
const rows = await this.#adapter.runQuery(
|
|
2097
|
+
const rows = await this.#adapter.runQuery(
|
|
2098
|
+
`
|
|
1966
2099
|
SELECT
|
|
1967
2100
|
kcu.CONSTRAINT_NAME,
|
|
1968
2101
|
kcu.TABLE_SCHEMA,
|
|
@@ -1975,7 +2108,9 @@ var MysqlTableGrounding = class extends TableGrounding {
|
|
|
1975
2108
|
WHERE kcu.REFERENCED_TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
1976
2109
|
AND kcu.REFERENCED_TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
1977
2110
|
ORDER BY kcu.CONSTRAINT_NAME, kcu.ORDINAL_POSITION
|
|
1978
|
-
|
|
2111
|
+
`,
|
|
2112
|
+
relationshipRow
|
|
2113
|
+
);
|
|
1979
2114
|
return this.#groupRelationships(rows);
|
|
1980
2115
|
}
|
|
1981
2116
|
#groupRelationships(rows) {
|
|
@@ -2009,12 +2144,16 @@ var MysqlTableGrounding = class extends TableGrounding {
|
|
|
2009
2144
|
}
|
|
2010
2145
|
async #getCurrentDatabase() {
|
|
2011
2146
|
const rows = await this.#adapter.runQuery(
|
|
2012
|
-
"SELECT DATABASE() AS db"
|
|
2147
|
+
"SELECT DATABASE() AS db",
|
|
2148
|
+
currentDatabaseRow
|
|
2013
2149
|
);
|
|
2014
2150
|
return rows[0]?.db ?? "";
|
|
2015
2151
|
}
|
|
2016
2152
|
};
|
|
2017
2153
|
|
|
2154
|
+
// packages/text2sql/src/lib/adapters/mysql/view.mysql.grounding.ts
|
|
2155
|
+
import { z as z10 } from "zod";
|
|
2156
|
+
|
|
2018
2157
|
// packages/text2sql/src/lib/adapters/groundings/view.grounding.ts
|
|
2019
2158
|
var ViewGrounding = class extends AbstractGrounding {
|
|
2020
2159
|
#filter;
|
|
@@ -2071,6 +2210,7 @@ var ViewGrounding = class extends AbstractGrounding {
|
|
|
2071
2210
|
};
|
|
2072
2211
|
|
|
2073
2212
|
// packages/text2sql/src/lib/adapters/mysql/view.mysql.grounding.ts
|
|
2213
|
+
var viewDefinitionRow2 = z10.object({ VIEW_DEFINITION: z10.string().nullable() });
|
|
2074
2214
|
var MysqlViewGrounding = class extends ViewGrounding {
|
|
2075
2215
|
#adapter;
|
|
2076
2216
|
#databases;
|
|
@@ -2080,33 +2220,42 @@ var MysqlViewGrounding = class extends ViewGrounding {
|
|
|
2080
2220
|
this.#databases = config.databases ?? adapter.databases;
|
|
2081
2221
|
}
|
|
2082
2222
|
async getAllViewNames() {
|
|
2083
|
-
const rows = await this.#adapter.runQuery(
|
|
2223
|
+
const rows = await this.#adapter.runQuery(
|
|
2224
|
+
`
|
|
2084
2225
|
SELECT DISTINCT CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) AS name
|
|
2085
2226
|
FROM INFORMATION_SCHEMA.VIEWS
|
|
2086
2227
|
WHERE 1=1
|
|
2087
2228
|
${this.#buildDatabaseFilter("TABLE_SCHEMA")}
|
|
2088
2229
|
ORDER BY name
|
|
2089
|
-
|
|
2230
|
+
`,
|
|
2231
|
+
nameRow
|
|
2232
|
+
);
|
|
2090
2233
|
return rows.map((r) => r.name);
|
|
2091
2234
|
}
|
|
2092
2235
|
async getView(viewName) {
|
|
2093
2236
|
const { schema, table: table2 } = this.#adapter.parseTableName(viewName);
|
|
2094
2237
|
const database = schema || await this.#getCurrentDatabase();
|
|
2095
|
-
const columns = await this.#adapter.runQuery(
|
|
2238
|
+
const columns = await this.#adapter.runQuery(
|
|
2239
|
+
`
|
|
2096
2240
|
SELECT COLUMN_NAME, DATA_TYPE
|
|
2097
2241
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
2098
2242
|
WHERE TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
2099
2243
|
AND TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
2100
2244
|
ORDER BY ORDINAL_POSITION
|
|
2101
|
-
|
|
2245
|
+
`,
|
|
2246
|
+
columnRow
|
|
2247
|
+
);
|
|
2102
2248
|
let definition;
|
|
2103
2249
|
if (this.includeDefinition) {
|
|
2104
|
-
const viewRows = await this.#adapter.runQuery(
|
|
2250
|
+
const viewRows = await this.#adapter.runQuery(
|
|
2251
|
+
`
|
|
2105
2252
|
SELECT VIEW_DEFINITION
|
|
2106
2253
|
FROM INFORMATION_SCHEMA.VIEWS
|
|
2107
2254
|
WHERE TABLE_SCHEMA = '${this.#adapter.escapeString(database)}'
|
|
2108
2255
|
AND TABLE_NAME = '${this.#adapter.escapeString(table2)}'
|
|
2109
|
-
|
|
2256
|
+
`,
|
|
2257
|
+
viewDefinitionRow2
|
|
2258
|
+
);
|
|
2110
2259
|
definition = viewRows[0]?.VIEW_DEFINITION ?? void 0;
|
|
2111
2260
|
}
|
|
2112
2261
|
return {
|
|
@@ -2130,7 +2279,8 @@ var MysqlViewGrounding = class extends ViewGrounding {
|
|
|
2130
2279
|
}
|
|
2131
2280
|
async #getCurrentDatabase() {
|
|
2132
2281
|
const rows = await this.#adapter.runQuery(
|
|
2133
|
-
"SELECT DATABASE() AS db"
|
|
2282
|
+
"SELECT DATABASE() AS db",
|
|
2283
|
+
currentDatabaseRow
|
|
2134
2284
|
);
|
|
2135
2285
|
return rows[0]?.db ?? "";
|
|
2136
2286
|
}
|
|
@@ -2138,15 +2288,19 @@ var MysqlViewGrounding = class extends ViewGrounding {
|
|
|
2138
2288
|
|
|
2139
2289
|
// packages/text2sql/src/lib/adapters/mysql/index.ts
|
|
2140
2290
|
function tables(config = {}) {
|
|
2141
|
-
return (
|
|
2291
|
+
return groundingFor(
|
|
2292
|
+
Mysql,
|
|
2293
|
+
(adapter) => new MysqlTableGrounding(adapter, config)
|
|
2294
|
+
);
|
|
2142
2295
|
}
|
|
2143
2296
|
function info(config = {}) {
|
|
2144
2297
|
return (adapter) => new MysqlInfoGrounding(adapter, config);
|
|
2145
2298
|
}
|
|
2146
2299
|
function views(config = {}) {
|
|
2147
|
-
return (
|
|
2148
|
-
|
|
2149
|
-
|
|
2300
|
+
return groundingFor(
|
|
2301
|
+
Mysql,
|
|
2302
|
+
(adapter) => new MysqlViewGrounding(adapter, config)
|
|
2303
|
+
);
|
|
2150
2304
|
}
|
|
2151
2305
|
function columnStats(config = {}) {
|
|
2152
2306
|
return (adapter) => {
|