@powersync/service-module-mysql 0.7.4 → 0.8.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/CHANGELOG.md +30 -0
- package/dev/docker/mysql/init-scripts/my.cnf +1 -3
- package/dist/api/MySQLRouteAPIAdapter.js +11 -3
- package/dist/api/MySQLRouteAPIAdapter.js.map +1 -1
- package/dist/common/ReplicatedGTID.js +4 -0
- package/dist/common/ReplicatedGTID.js.map +1 -1
- package/dist/common/common-index.d.ts +1 -2
- package/dist/common/common-index.js +1 -2
- package/dist/common/common-index.js.map +1 -1
- package/dist/common/mysql-to-sqlite.js +4 -0
- package/dist/common/mysql-to-sqlite.js.map +1 -1
- package/dist/common/schema-utils.d.ts +20 -0
- package/dist/common/{get-replication-columns.js → schema-utils.js} +73 -30
- package/dist/common/schema-utils.js.map +1 -0
- package/dist/replication/BinLogStream.d.ts +9 -6
- package/dist/replication/BinLogStream.js +99 -70
- package/dist/replication/BinLogStream.js.map +1 -1
- package/dist/replication/zongji/BinLogListener.d.ts +52 -5
- package/dist/replication/zongji/BinLogListener.js +302 -85
- package/dist/replication/zongji/BinLogListener.js.map +1 -1
- package/dist/replication/zongji/zongji-utils.d.ts +2 -1
- package/dist/replication/zongji/zongji-utils.js +3 -0
- package/dist/replication/zongji/zongji-utils.js.map +1 -1
- package/dist/types/node-sql-parser-extended-types.d.ts +31 -0
- package/dist/types/node-sql-parser-extended-types.js +2 -0
- package/dist/types/node-sql-parser-extended-types.js.map +1 -0
- package/dist/utils/mysql-utils.d.ts +4 -2
- package/dist/utils/mysql-utils.js +15 -3
- package/dist/utils/mysql-utils.js.map +1 -1
- package/dist/utils/parser-utils.d.ts +16 -0
- package/dist/utils/parser-utils.js +58 -0
- package/dist/utils/parser-utils.js.map +1 -0
- package/package.json +9 -8
- package/src/api/MySQLRouteAPIAdapter.ts +11 -3
- package/src/common/ReplicatedGTID.ts +6 -1
- package/src/common/common-index.ts +1 -2
- package/src/common/mysql-to-sqlite.ts +3 -0
- package/src/common/{get-replication-columns.ts → schema-utils.ts} +96 -37
- package/src/replication/BinLogStream.ts +119 -91
- package/src/replication/zongji/BinLogListener.ts +370 -93
- package/src/replication/zongji/zongji-utils.ts +6 -1
- package/src/types/node-sql-parser-extended-types.ts +25 -0
- package/src/utils/mysql-utils.ts +19 -4
- package/src/utils/parser-utils.ts +73 -0
- package/test/src/BinLogListener.test.ts +415 -32
- package/test/src/BinLogStream.test.ts +128 -52
- package/test/src/BinlogStreamUtils.ts +12 -2
- package/test/src/parser-utils.test.ts +24 -0
- package/test/src/schema-changes.test.ts +663 -0
- package/test/src/util.ts +6 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/common/get-replication-columns.d.ts +0 -12
- package/dist/common/get-replication-columns.js.map +0 -1
- package/dist/common/get-tables-from-pattern.d.ts +0 -7
- package/dist/common/get-tables-from-pattern.js +0 -28
- package/dist/common/get-tables-from-pattern.js.map +0 -1
- package/src/common/get-tables-from-pattern.ts +0 -44
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { storage } from '@powersync/service-core';
|
|
2
|
-
import mysqlPromise from 'mysql2/promise';
|
|
3
|
-
export type GetReplicationColumnsOptions = {
|
|
4
|
-
connection: mysqlPromise.Connection;
|
|
5
|
-
schema: string;
|
|
6
|
-
table_name: string;
|
|
7
|
-
};
|
|
8
|
-
export type ReplicationIdentityColumnsResult = {
|
|
9
|
-
columns: storage.ColumnDescriptor[];
|
|
10
|
-
identity: string;
|
|
11
|
-
};
|
|
12
|
-
export declare function getReplicationIdentityColumns(options: GetReplicationColumnsOptions): Promise<ReplicationIdentityColumnsResult>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-replication-columns.js","sourceRoot":"","sources":["../../src/common/get-replication-columns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAcvD,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAqC;IAErC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,CAAC,iBAAiB,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QACzD,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE;;;;;;;;;;;;;;;;;;OAkBJ;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;KAC7B,CAAC,CAAC;IAEH,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;YACH,QAAQ,EAAE,SAAS;SACpB,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,kDAAkD;IAClD,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QACxD,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;OAqBJ;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;KAC7B,CAAC,CAAC;IAEH,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,GAAG,CAAC,WAAW;gBACrB,IAAI,EAAE,GAAG,CAAC,SAAS;aACpB,CAAC,CAAC;YACH,QAAQ,EAAE,OAAO;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QAClD,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE;;;;;;;;;;;;;;;;;OAiBJ;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;KAC7B,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;QACH,QAAQ,EAAE,MAAM;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as sync_rules from '@powersync/service-sync-rules';
|
|
2
|
-
import mysql from 'mysql2/promise';
|
|
3
|
-
export type GetDebugTablesInfoOptions = {
|
|
4
|
-
connection: mysql.Connection;
|
|
5
|
-
tablePattern: sync_rules.TablePattern;
|
|
6
|
-
};
|
|
7
|
-
export declare function getTablesFromPattern(options: GetDebugTablesInfoOptions): Promise<Set<string>>;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export async function getTablesFromPattern(options) {
|
|
2
|
-
const { connection, tablePattern } = options;
|
|
3
|
-
const schema = tablePattern.schema;
|
|
4
|
-
if (tablePattern.isWildcard) {
|
|
5
|
-
const [results] = await connection.query(`SELECT
|
|
6
|
-
TABLE_NAME AS table_name
|
|
7
|
-
FROM
|
|
8
|
-
INFORMATION_SCHEMA.TABLES
|
|
9
|
-
WHERE
|
|
10
|
-
TABLE_SCHEMA = ?
|
|
11
|
-
AND TABLE_NAME LIKE ?`, [schema, tablePattern.tablePattern]);
|
|
12
|
-
return new Set(results
|
|
13
|
-
.filter((result) => result.table_name.startsWith(tablePattern.tablePrefix))
|
|
14
|
-
.map((result) => result.table_name));
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
const [[match]] = await connection.query(`SELECT
|
|
18
|
-
TABLE_NAME AS table_name
|
|
19
|
-
FROM
|
|
20
|
-
INFORMATION_SCHEMA.TABLES
|
|
21
|
-
WHERE
|
|
22
|
-
TABLE_SCHEMA = ?
|
|
23
|
-
AND TABLE_NAME = ?`, [tablePattern.schema, tablePattern.tablePattern]);
|
|
24
|
-
// Only return the first result
|
|
25
|
-
return new Set([match.table_name]);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=get-tables-from-pattern.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-tables-from-pattern.js","sourceRoot":"","sources":["../../src/common/get-tables-from-pattern.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAkC;IAC3E,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAEnC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,UAAU,CAAC,KAAK,CACtC;;;;;;kCAM4B,EAC5B,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CACpC,CAAC;QAEF,OAAO,IAAI,GAAG,CACZ,OAAO;aACJ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;aAC1E,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CACtC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,UAAU,CAAC,KAAK,CACtC;;;;;;+BAMyB,EACzB,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CACjD,CAAC;QACF,+BAA+B;QAC/B,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import * as sync_rules from '@powersync/service-sync-rules';
|
|
2
|
-
import mysql from 'mysql2/promise';
|
|
3
|
-
|
|
4
|
-
export type GetDebugTablesInfoOptions = {
|
|
5
|
-
connection: mysql.Connection;
|
|
6
|
-
tablePattern: sync_rules.TablePattern;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export async function getTablesFromPattern(options: GetDebugTablesInfoOptions): Promise<Set<string>> {
|
|
10
|
-
const { connection, tablePattern } = options;
|
|
11
|
-
const schema = tablePattern.schema;
|
|
12
|
-
|
|
13
|
-
if (tablePattern.isWildcard) {
|
|
14
|
-
const [results] = await connection.query<mysql.RowDataPacket[]>(
|
|
15
|
-
`SELECT
|
|
16
|
-
TABLE_NAME AS table_name
|
|
17
|
-
FROM
|
|
18
|
-
INFORMATION_SCHEMA.TABLES
|
|
19
|
-
WHERE
|
|
20
|
-
TABLE_SCHEMA = ?
|
|
21
|
-
AND TABLE_NAME LIKE ?`,
|
|
22
|
-
[schema, tablePattern.tablePattern]
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
return new Set(
|
|
26
|
-
results
|
|
27
|
-
.filter((result) => result.table_name.startsWith(tablePattern.tablePrefix))
|
|
28
|
-
.map((result) => result.table_name)
|
|
29
|
-
);
|
|
30
|
-
} else {
|
|
31
|
-
const [[match]] = await connection.query<mysql.RowDataPacket[]>(
|
|
32
|
-
`SELECT
|
|
33
|
-
TABLE_NAME AS table_name
|
|
34
|
-
FROM
|
|
35
|
-
INFORMATION_SCHEMA.TABLES
|
|
36
|
-
WHERE
|
|
37
|
-
TABLE_SCHEMA = ?
|
|
38
|
-
AND TABLE_NAME = ?`,
|
|
39
|
-
[tablePattern.schema, tablePattern.tablePattern]
|
|
40
|
-
);
|
|
41
|
-
// Only return the first result
|
|
42
|
-
return new Set([match.table_name]);
|
|
43
|
-
}
|
|
44
|
-
}
|