Skip to content

Commit 6565b14

Browse files
[update]: codeql suggestion updates + new tests on generated
1 parent e93475f commit 6565b14

File tree

5 files changed

+49
-4
lines changed

5 files changed

+49
-4
lines changed

drizzle-kit/src/dialects/cockroach/grammar.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,10 +327,10 @@ export const unescapeFromSqlDefault = (input: string) => {
327327

328328
input = trimChar(input, "'");
329329

330-
let res = input.replace(/\\"/g, '"').replace(/\\\\/g, '\\');
330+
let res = input.replace(/\\"/g, '"').replace(/\\'/g, "'").replace(/\\\\/g, '\\');
331331

332332
// if (mode === 'arr') return res;
333-
return res.replace(/\\'/g, "'");
333+
return res;
334334
};
335335

336336
export const escapeForTsLiteral = (input: string) => {

drizzle-kit/src/dialects/postgres/grammar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1338,7 +1338,7 @@ export const Line: SqlType = {
13381338
const res = parseArray(trimmed);
13391339

13401340
const def = stringifyArray(res, 'ts', (v) => {
1341-
if (!/^\(\d+,\d+,\d+\)$/.test(v)) isDrizzleSql = true;
1341+
if (!/^\{\d+,\d+,\d+\}$/.test(v)) isDrizzleSql = true;
13421342
return v.replace('{', '[').replace('}', ']');
13431343
});
13441344

drizzle-kit/src/dialects/sqlite/grammar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ export const Blob: SqlType = {
231231

232232
if (typeof Buffer !== 'undefined' && value.startsWith("X'")) {
233233
const parsed = Buffer.from(value.slice(2, value.length - 1), 'hex').toString('utf-8');
234-
const escaped = parsed.replaceAll('\\', '\\\\').replace('"', '\\"');
234+
const escaped = parsed.replaceAll('\\', '\\\\').replaceAll('"', '\\"');
235235
return `Buffer.from("${escaped}")`;
236236
}
237237

drizzle-kit/tests/mysql/mysql-generated.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,3 +1087,30 @@ test('generated as string: change generated constraint', async () => {
10871087
expect(st).toStrictEqual(st0);
10881088
expect(pst).toStrictEqual([]);
10891089
});
1090+
1091+
test('generated as string: with backslashes', async () => {
1092+
const to = {
1093+
users: mysqlTable('users', {
1094+
id: int('id'),
1095+
id2: int('id2'),
1096+
name: text('name'),
1097+
generatedName: text('gen_name').generatedAlwaysAs(
1098+
`'users\\\\hello'`,
1099+
),
1100+
}),
1101+
};
1102+
1103+
const { sqlStatements: st } = await diff({}, to, []);
1104+
const { sqlStatements: pst } = await push({ db, to });
1105+
1106+
const st0: string[] = [
1107+
`CREATE TABLE \`users\` (
1108+
\`id\` int,
1109+
\`id2\` int,
1110+
\`name\` text,
1111+
\`gen_name\` text GENERATED ALWAYS AS ('users\\\\hello') VIRTUAL
1112+
);\n`,
1113+
];
1114+
expect(st).toStrictEqual(st0);
1115+
expect(pst).toStrictEqual(st0);
1116+
});

drizzle-kit/tests/mysql/pull.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,3 +544,21 @@ test('introspect bit(1); custom type', async () => {
544544
expect(statements.length).toBe(0);
545545
expect(sqlStatements.length).toBe(0);
546546
});
547+
548+
test('generated as string: change generated constraint', async () => {
549+
const schema = {
550+
users: mysqlTable('users', {
551+
id: int('id'),
552+
id2: int('id2'),
553+
name: text('name'),
554+
generatedName: text('gen_name').generatedAlwaysAs(
555+
`'users\\\\hello'`,
556+
),
557+
}),
558+
};
559+
560+
const { statements, sqlStatements } = await diffIntrospect(db, schema, 'introspect-generated-with-backslashes');
561+
562+
expect(statements.length).toBe(0);
563+
expect(sqlStatements.length).toBe(0);
564+
});

0 commit comments

Comments
 (0)