@powersync/service-module-mysql 0.0.0-dev-20241107065634 → 0.0.0-dev-20241111122558

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.
Files changed (30) hide show
  1. package/CHANGELOG.md +7 -5
  2. package/dist/api/MySQLRouteAPIAdapter.js +9 -8
  3. package/dist/api/MySQLRouteAPIAdapter.js.map +1 -1
  4. package/dist/common/ReplicatedGTID.js +1 -1
  5. package/dist/common/check-source-configuration.d.ts +0 -1
  6. package/dist/common/check-source-configuration.js +6 -8
  7. package/dist/common/check-source-configuration.js.map +1 -1
  8. package/dist/common/get-replication-columns.js +1 -1
  9. package/dist/common/read-executed-gtid.js +4 -8
  10. package/dist/common/read-executed-gtid.js.map +1 -1
  11. package/dist/replication/BinLogStream.js +1 -1
  12. package/dist/replication/MySQLConnectionManager.js +1 -1
  13. package/dist/utils/{mysql_utils.d.ts → mysql-utils.d.ts} +7 -0
  14. package/dist/utils/{mysql_utils.js → mysql-utils.js} +19 -1
  15. package/dist/utils/mysql-utils.js.map +1 -0
  16. package/package.json +5 -5
  17. package/src/api/MySQLRouteAPIAdapter.ts +11 -9
  18. package/src/common/ReplicatedGTID.ts +1 -1
  19. package/src/common/check-source-configuration.ts +9 -10
  20. package/src/common/get-replication-columns.ts +1 -1
  21. package/src/common/read-executed-gtid.ts +5 -9
  22. package/src/replication/BinLogStream.ts +1 -1
  23. package/src/replication/MySQLConnectionManager.ts +1 -1
  24. package/src/utils/{mysql_utils.ts → mysql-utils.ts} +22 -0
  25. package/test/src/BinLogStream.test.ts +25 -51
  26. package/test/src/mysql-utils.test.ts +17 -0
  27. package/test/src/util.ts +2 -7
  28. package/tsconfig.tsbuildinfo +1 -1
  29. package/dist/utils/mysql_utils.js.map +0 -1
  30. /package/test/src/{MysqlTypeMappings.test.ts → mysql-to-sqlite.test.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @powersync/service-module-mysql
2
2
 
3
- ## 0.0.0-dev-20241107065634
3
+ ## 0.0.0-dev-20241111122558
4
4
 
5
5
  ### Minor Changes
6
6
 
@@ -12,6 +12,8 @@
12
12
 
13
13
  ### Patch Changes
14
14
 
15
+ - c879923: Fixed MySQL version checking to better handle non-semantic version strings
16
+ - 7ba4d11: Fixed mysql schema json parsing
15
17
  - Updated dependencies [ac03d8f]
16
18
  - Updated dependencies [e4d19b2]
17
19
  - Updated dependencies [d2ece1b]
@@ -21,7 +23,7 @@
21
23
  - Updated dependencies [d2ece1b]
22
24
  - Updated dependencies [d51921f]
23
25
  - Updated dependencies [4ecaee2]
24
- - @powersync/service-core@0.0.0-dev-20241107065634
25
- - @powersync/lib-services-framework@0.0.0-dev-20241107065634
26
- - @powersync/service-sync-rules@0.0.0-dev-20241107065634
27
- - @powersync/service-types@0.0.0-dev-20241107065634
26
+ - @powersync/service-core@0.0.0-dev-20241111122558
27
+ - @powersync/lib-services-framework@0.0.0-dev-20241111122558
28
+ - @powersync/service-sync-rules@0.0.0-dev-20241111122558
29
+ - @powersync/service-types@0.0.0-dev-20241111122558
@@ -2,7 +2,7 @@ import { storage } from '@powersync/service-core';
2
2
  import * as sync_rules from '@powersync/service-sync-rules';
3
3
  import * as service_types from '@powersync/service-types';
4
4
  import * as common from '../common/common-index.js';
5
- import * as mysql_utils from '../utils/mysql_utils.js';
5
+ import * as mysql_utils from '../utils/mysql-utils.js';
6
6
  import { toExpressionTypeFromMySQLType } from '../common/common-index.js';
7
7
  export class MySQLRouteAPIAdapter {
8
8
  constructor(config) {
@@ -284,15 +284,16 @@ export class MySQLRouteAPIAdapter {
284
284
  name: result.schema_name,
285
285
  tables: []
286
286
  });
287
+ const columns = JSON.parse(result.columns).map((column) => ({
288
+ name: column.column_name,
289
+ type: column.data_type,
290
+ sqlite_type: toExpressionTypeFromMySQLType(column.data_type).typeFlags,
291
+ internal_type: column.data_type,
292
+ pg_type: column.data_type
293
+ }));
287
294
  schema.tables.push({
288
295
  name: result.table_name,
289
- columns: result.columns.map((column) => ({
290
- name: column.column_name,
291
- type: column.data_type,
292
- sqlite_type: toExpressionTypeFromMySQLType(column.data_type).typeFlags,
293
- internal_type: column.data_type,
294
- pg_type: column.data_type
295
- }))
296
+ columns: columns
296
297
  });
297
298
  return hash;
298
299
  }, {}));
@@ -1 +1 @@
1
- {"version":3,"file":"MySQLRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MySQLRouteAPIAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MySQLRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MySQLRouteAPIAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as uuid from 'uuid';
2
- import * as mysql_utils from '../utils/mysql_utils.js';
2
+ import * as mysql_utils from '../utils/mysql-utils.js';
3
3
  /**
4
4
  * A wrapper around the MySQL GTID value.
5
5
  * This adds and tracks additional metadata such as the BinLog filename
@@ -1,3 +1,2 @@
1
1
  import mysqlPromise from 'mysql2/promise';
2
2
  export declare function checkSourceConfiguration(connection: mysqlPromise.Connection): Promise<string[]>;
3
- export declare function getMySQLVersion(connection: mysqlPromise.Connection): Promise<string>;
@@ -1,6 +1,11 @@
1
- import * as mysql_utils from '../utils/mysql_utils.js';
1
+ import * as mysql_utils from '../utils/mysql-utils.js';
2
+ const MIN_SUPPORTED_VERSION = '5.7.0';
2
3
  export async function checkSourceConfiguration(connection) {
3
4
  const errors = [];
5
+ const version = await mysql_utils.getMySQLVersion(connection);
6
+ if (!mysql_utils.isVersionAtLeast(version, MIN_SUPPORTED_VERSION)) {
7
+ errors.push(`MySQL versions older than ${MIN_SUPPORTED_VERSION} are not supported. Your version is: ${version}.`);
8
+ }
4
9
  const [[result]] = await mysql_utils.retriedQuery({
5
10
  connection,
6
11
  query: `
@@ -36,11 +41,4 @@ export async function checkSourceConfiguration(connection) {
36
41
  }
37
42
  return errors;
38
43
  }
39
- export async function getMySQLVersion(connection) {
40
- const [[versionResult]] = await mysql_utils.retriedQuery({
41
- connection,
42
- query: `SELECT VERSION() as version`
43
- });
44
- return versionResult.version;
45
- }
46
44
  //# sourceMappingURL=check-source-configuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-source-configuration.js","sourceRoot":"","sources":["../../src/common/check-source-configuration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,UAAmC;IAChF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QAChD,UAAU;QACV,KAAK,EAAE;;;;;;;OAOJ;KACJ,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,+CAA+C,MAAM,CAAC,SAAS,qBAAqB,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,iFAAiF,MAAM,CAAC,SAAS,sCAAsC,CACxI,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QAC5D,UAAU;QACV,KAAK,EAAE,sCAAsC;KAC9C,CAAC,CAAC;IAEH,IAAI,kBAAkB,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAmC;IACvE,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QACvD,UAAU;QACV,KAAK,EAAE,6BAA6B;KACrC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,OAAiB,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"check-source-configuration.js","sourceRoot":"","sources":["../../src/common/check-source-configuration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,UAAmC;IAChF,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,6BAA6B,qBAAqB,wCAAwC,OAAO,GAAG,CAAC,CAAC;IACpH,CAAC;IAED,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QAChD,UAAU;QACV,KAAK,EAAE;;;;;;;OAOJ;KACJ,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,+CAA+C,MAAM,CAAC,SAAS,qBAAqB,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,iFAAiF,MAAM,CAAC,SAAS,sCAAsC,CACxI,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QAC5D,UAAU;QACV,KAAK,EAAE,sCAAsC;KAC9C,CAAC,CAAC;IAEH,IAAI,kBAAkB,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import * as mysql_utils from '../utils/mysql_utils.js';
1
+ import * as mysql_utils from '../utils/mysql-utils.js';
2
2
  export async function getReplicationIdentityColumns(options) {
3
3
  const { connection, schema, table_name } = options;
4
4
  const [primaryKeyColumns] = await mysql_utils.retriedQuery({
@@ -1,15 +1,13 @@
1
- import * as mysql_utils from '../utils/mysql_utils.js';
2
- import { gte } from 'semver';
1
+ import * as mysql_utils from '../utils/mysql-utils.js';
3
2
  import { ReplicatedGTID } from './ReplicatedGTID.js';
4
- import { getMySQLVersion } from './check-source-configuration.js';
5
3
  /**
6
4
  * Gets the current master HEAD GTID
7
5
  */
8
6
  export async function readExecutedGtid(connection) {
9
- const version = await getMySQLVersion(connection);
7
+ const version = await mysql_utils.getMySQLVersion(connection);
10
8
  let binlogStatus;
11
- if (gte(version, '8.4.0')) {
12
- // Get the BinLog status
9
+ if (mysql_utils.isVersionAtLeast(version, '8.4.0')) {
10
+ // Syntax for the below query changed in 8.4.0
13
11
  const [[binLogResult]] = await mysql_utils.retriedQuery({
14
12
  connection,
15
13
  query: `SHOW BINARY LOG STATUS`
@@ -17,8 +15,6 @@ export async function readExecutedGtid(connection) {
17
15
  binlogStatus = binLogResult;
18
16
  }
19
17
  else {
20
- // TODO Check if this works for version 5.7
21
- // Get the BinLog status
22
18
  const [[binLogResult]] = await mysql_utils.retriedQuery({
23
19
  connection,
24
20
  query: `SHOW MASTER STATUS`
@@ -1 +1 @@
1
- {"version":3,"file":"read-executed-gtid.js","sourceRoot":"","sources":["../../src/common/read-executed-gtid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAmC;IACxE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,YAAwC,CAAC;IAC7C,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAC1B,wBAAwB;QACxB,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;YACtD,UAAU;YACV,KAAK,EAAE,wBAAwB;SAChC,CAAC,CAAC;QACH,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,2CAA2C;QAC3C,wBAAwB;QACxB,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;YACtD,UAAU;YACV,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QACH,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,YAAY,CAAC,IAAI;QAC3B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;KACxC,CAAC;IAEF,OAAO,IAAI,cAAc,CAAC;QACxB,wEAAwE;QACxE,QAAQ;QACR,QAAQ,EAAE,YAAY,CAAC,iBAAiB;KACzC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAmC,EACnC,UAAkB;IAElB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QAChD,UAAU;QACV,KAAK,EAAE,mBAAmB;KAC3B,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"read-executed-gtid.js","sourceRoot":"","sources":["../../src/common/read-executed-gtid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAmC;IACxE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAE9D,IAAI,YAAwC,CAAC;IAC7C,IAAI,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACnD,8CAA8C;QAC9C,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;YACtD,UAAU;YACV,KAAK,EAAE,wBAAwB;SAChC,CAAC,CAAC;QACH,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;YACtD,UAAU;YACV,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QACH,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,YAAY,CAAC,IAAI;QAC3B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;KACxC,CAAC;IAEF,OAAO,IAAI,cAAc,CAAC;QACxB,wEAAwE;QACxE,QAAQ;QACR,QAAQ,EAAE,YAAY,CAAC,iBAAiB;KACzC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAmC,EACnC,UAAkB;IAElB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;QAChD,UAAU;QACV,KAAK,EAAE,mBAAmB;KAC3B,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC;AAC3D,CAAC"}
@@ -4,7 +4,7 @@ import { framework, getUuidReplicaIdentityBson, Metrics, storage } from '@powers
4
4
  import * as common from '../common/common-index.js';
5
5
  import * as zongji_utils from './zongji/zongji-utils.js';
6
6
  import { isBinlogStillAvailable, ReplicatedGTID, toColumnDescriptors } from '../common/common-index.js';
7
- import { createRandomServerId } from '../utils/mysql_utils.js';
7
+ import { createRandomServerId } from '../utils/mysql-utils.js';
8
8
  export class BinlogConfigurationError extends Error {
9
9
  constructor(message) {
10
10
  super(message);
@@ -1,4 +1,4 @@
1
- import * as mysql_utils from '../utils/mysql_utils.js';
1
+ import * as mysql_utils from '../utils/mysql-utils.js';
2
2
  import ZongJi from '@powersync/mysql-zongji';
3
3
  import { logger } from '@powersync/lib-services-framework';
4
4
  export class MySQLConnectionManager {
@@ -21,3 +21,10 @@ export declare function createPool(config: types.NormalizedMySQLConnectionConfig
21
21
  * @param syncRuleId
22
22
  */
23
23
  export declare function createRandomServerId(syncRuleId: number): number;
24
+ export declare function getMySQLVersion(connection: mysqlPromise.Connection): Promise<string>;
25
+ /**
26
+ * Check if the current MySQL version is newer or equal to the target version.
27
+ * @param version
28
+ * @param minimumVersion
29
+ */
30
+ export declare function isVersionAtLeast(version: string, minimumVersion: string): boolean;
@@ -1,5 +1,6 @@
1
1
  import { logger } from '@powersync/lib-services-framework';
2
2
  import mysql from 'mysql2';
3
+ import { coerce, gte } from 'semver';
3
4
  /**
4
5
  * Retry a simple query - up to 2 attempts total.
5
6
  */
@@ -49,4 +50,21 @@ export function createPool(config, options) {
49
50
  export function createRandomServerId(syncRuleId) {
50
51
  return Number.parseInt(`${syncRuleId}00${Math.floor(Math.random() * 10000)}`);
51
52
  }
52
- //# sourceMappingURL=mysql_utils.js.map
53
+ export async function getMySQLVersion(connection) {
54
+ const [[versionResult]] = await retriedQuery({
55
+ connection,
56
+ query: `SELECT VERSION() as version`
57
+ });
58
+ return versionResult.version;
59
+ }
60
+ /**
61
+ * Check if the current MySQL version is newer or equal to the target version.
62
+ * @param version
63
+ * @param minimumVersion
64
+ */
65
+ export function isVersionAtLeast(version, minimumVersion) {
66
+ const coercedVersion = coerce(version);
67
+ const coercedMinimumVersion = coerce(minimumVersion);
68
+ return gte(coercedVersion, coercedMinimumVersion, { loose: true });
69
+ }
70
+ //# sourceMappingURL=mysql-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-utils.js","sourceRoot":"","sources":["../../src/utils/mysql-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AASrC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAChE,KAAK,IAAI,KAAK,GAAG,OAAO,GAAI,KAAK,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;YAC1C,OAAO,UAAU,CAAC,KAAK,CAA+B,KAAK,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA6C,EAAE,OAA2B;IACnG,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,MAAM,CAAC,MAAM;QACjB,GAAG,EAAE,MAAM,CAAC,kBAAkB;QAC9B,IAAI,EAAE,MAAM,CAAC,kBAAkB;KAChC,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,UAAU,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3C,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,GAAG,EAAE,0DAA0D;QACzE,WAAW,EAAE,IAAI,EAAE,iCAAiC;QACpD,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAmC;IACvE,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,MAAM,YAAY,CAAC;QAC3C,UAAU;QACV,KAAK,EAAE,6BAA6B;KACrC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,OAAiB,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,cAAsB;IACtE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,qBAAqB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAErD,OAAO,GAAG,CAAC,cAAe,EAAE,qBAAsB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@powersync/service-module-mysql",
3
3
  "repository": "https://github.com/powersync-ja/powersync-service",
4
4
  "types": "dist/index.d.ts",
5
- "version": "0.0.0-dev-20241107065634",
5
+ "version": "0.0.0-dev-20241111122558",
6
6
  "license": "FSL-1.1-Apache-2.0",
7
7
  "main": "dist/index.js",
8
8
  "type": "module",
@@ -29,10 +29,10 @@
29
29
  "ts-codec": "^1.2.2",
30
30
  "uri-js": "^4.4.1",
31
31
  "uuid": "^9.0.1",
32
- "@powersync/lib-services-framework": "0.0.0-dev-20241107065634",
33
- "@powersync/service-sync-rules": "0.0.0-dev-20241107065634",
34
- "@powersync/service-core": "0.0.0-dev-20241107065634",
35
- "@powersync/service-types": "0.0.0-dev-20241107065634",
32
+ "@powersync/lib-services-framework": "0.0.0-dev-20241111122558",
33
+ "@powersync/service-core": "0.0.0-dev-20241111122558",
34
+ "@powersync/service-sync-rules": "0.0.0-dev-20241111122558",
35
+ "@powersync/service-types": "0.0.0-dev-20241111122558",
36
36
  "@powersync/service-jsonbig": "0.17.10"
37
37
  },
38
38
  "devDependencies": {
@@ -4,14 +4,14 @@ import * as sync_rules from '@powersync/service-sync-rules';
4
4
  import * as service_types from '@powersync/service-types';
5
5
  import mysql from 'mysql2/promise';
6
6
  import * as common from '../common/common-index.js';
7
- import * as mysql_utils from '../utils/mysql_utils.js';
7
+ import * as mysql_utils from '../utils/mysql-utils.js';
8
8
  import * as types from '../types/types.js';
9
9
  import { toExpressionTypeFromMySQLType } from '../common/common-index.js';
10
10
 
11
11
  type SchemaResult = {
12
12
  schema_name: string;
13
13
  table_name: string;
14
- columns: Array<{ data_type: string; column_name: string }>;
14
+ columns: string;
15
15
  };
16
16
 
17
17
  export class MySQLRouteAPIAdapter implements api.RouteAPI {
@@ -327,15 +327,17 @@ export class MySQLRouteAPIAdapter implements api.RouteAPI {
327
327
  tables: []
328
328
  });
329
329
 
330
+ const columns = JSON.parse(result.columns).map((column: { data_type: string; column_name: string }) => ({
331
+ name: column.column_name,
332
+ type: column.data_type,
333
+ sqlite_type: toExpressionTypeFromMySQLType(column.data_type).typeFlags,
334
+ internal_type: column.data_type,
335
+ pg_type: column.data_type
336
+ }));
337
+
330
338
  schema.tables.push({
331
339
  name: result.table_name,
332
- columns: result.columns.map((column) => ({
333
- name: column.column_name,
334
- type: column.data_type,
335
- sqlite_type: toExpressionTypeFromMySQLType(column.data_type).typeFlags,
336
- internal_type: column.data_type,
337
- pg_type: column.data_type
338
- }))
340
+ columns: columns
339
341
  });
340
342
 
341
343
  return hash;
@@ -1,6 +1,6 @@
1
1
  import mysql from 'mysql2/promise';
2
2
  import * as uuid from 'uuid';
3
- import * as mysql_utils from '../utils/mysql_utils.js';
3
+ import * as mysql_utils from '../utils/mysql-utils.js';
4
4
 
5
5
  export type BinLogPosition = {
6
6
  filename: string;
@@ -1,8 +1,16 @@
1
1
  import mysqlPromise from 'mysql2/promise';
2
- import * as mysql_utils from '../utils/mysql_utils.js';
2
+ import * as mysql_utils from '../utils/mysql-utils.js';
3
+
4
+ const MIN_SUPPORTED_VERSION = '5.7.0';
3
5
 
4
6
  export async function checkSourceConfiguration(connection: mysqlPromise.Connection): Promise<string[]> {
5
7
  const errors: string[] = [];
8
+
9
+ const version = await mysql_utils.getMySQLVersion(connection);
10
+ if (!mysql_utils.isVersionAtLeast(version, MIN_SUPPORTED_VERSION)) {
11
+ errors.push(`MySQL versions older than ${MIN_SUPPORTED_VERSION} are not supported. Your version is: ${version}.`);
12
+ }
13
+
6
14
  const [[result]] = await mysql_utils.retriedQuery({
7
15
  connection,
8
16
  query: `
@@ -48,12 +56,3 @@ export async function checkSourceConfiguration(connection: mysqlPromise.Connecti
48
56
 
49
57
  return errors;
50
58
  }
51
-
52
- export async function getMySQLVersion(connection: mysqlPromise.Connection): Promise<string> {
53
- const [[versionResult]] = await mysql_utils.retriedQuery({
54
- connection,
55
- query: `SELECT VERSION() as version`
56
- });
57
-
58
- return versionResult.version as string;
59
- }
@@ -1,6 +1,6 @@
1
1
  import { storage } from '@powersync/service-core';
2
2
  import mysqlPromise from 'mysql2/promise';
3
- import * as mysql_utils from '../utils/mysql_utils.js';
3
+ import * as mysql_utils from '../utils/mysql-utils.js';
4
4
 
5
5
  export type GetReplicationColumnsOptions = {
6
6
  connection: mysqlPromise.Connection;
@@ -1,26 +1,22 @@
1
1
  import mysqlPromise from 'mysql2/promise';
2
- import * as mysql_utils from '../utils/mysql_utils.js';
3
- import { gte } from 'semver';
4
-
2
+ import * as mysql_utils from '../utils/mysql-utils.js';
5
3
  import { ReplicatedGTID } from './ReplicatedGTID.js';
6
- import { getMySQLVersion } from './check-source-configuration.js';
7
4
 
8
5
  /**
9
6
  * Gets the current master HEAD GTID
10
7
  */
11
8
  export async function readExecutedGtid(connection: mysqlPromise.Connection): Promise<ReplicatedGTID> {
12
- const version = await getMySQLVersion(connection);
9
+ const version = await mysql_utils.getMySQLVersion(connection);
10
+
13
11
  let binlogStatus: mysqlPromise.RowDataPacket;
14
- if (gte(version, '8.4.0')) {
15
- // Get the BinLog status
12
+ if (mysql_utils.isVersionAtLeast(version, '8.4.0')) {
13
+ // Syntax for the below query changed in 8.4.0
16
14
  const [[binLogResult]] = await mysql_utils.retriedQuery({
17
15
  connection,
18
16
  query: `SHOW BINARY LOG STATUS`
19
17
  });
20
18
  binlogStatus = binLogResult;
21
19
  } else {
22
- // TODO Check if this works for version 5.7
23
- // Get the BinLog status
24
20
  const [[binLogResult]] = await mysql_utils.retriedQuery({
25
21
  connection,
26
22
  query: `SHOW MASTER STATUS`
@@ -11,7 +11,7 @@ import * as zongji_utils from './zongji/zongji-utils.js';
11
11
  import { MySQLConnectionManager } from './MySQLConnectionManager.js';
12
12
  import { isBinlogStillAvailable, ReplicatedGTID, toColumnDescriptors } from '../common/common-index.js';
13
13
  import mysqlPromise from 'mysql2/promise';
14
- import { createRandomServerId } from '../utils/mysql_utils.js';
14
+ import { createRandomServerId } from '../utils/mysql-utils.js';
15
15
 
16
16
  export interface BinLogStreamOptions {
17
17
  connections: MySQLConnectionManager;
@@ -1,7 +1,7 @@
1
1
  import { NormalizedMySQLConnectionConfig } from '../types/types.js';
2
2
  import mysqlPromise from 'mysql2/promise';
3
3
  import mysql, { FieldPacket, RowDataPacket } from 'mysql2';
4
- import * as mysql_utils from '../utils/mysql_utils.js';
4
+ import * as mysql_utils from '../utils/mysql-utils.js';
5
5
  import ZongJi from '@powersync/mysql-zongji';
6
6
  import { logger } from '@powersync/lib-services-framework';
7
7
 
@@ -2,6 +2,7 @@ import { logger } from '@powersync/lib-services-framework';
2
2
  import mysql from 'mysql2';
3
3
  import mysqlPromise from 'mysql2/promise';
4
4
  import * as types from '../types/types.js';
5
+ import { coerce, gte } from 'semver';
5
6
 
6
7
  export type RetriedQueryOptions = {
7
8
  connection: mysqlPromise.Connection;
@@ -60,3 +61,24 @@ export function createPool(config: types.NormalizedMySQLConnectionConfig, option
60
61
  export function createRandomServerId(syncRuleId: number): number {
61
62
  return Number.parseInt(`${syncRuleId}00${Math.floor(Math.random() * 10000)}`);
62
63
  }
64
+
65
+ export async function getMySQLVersion(connection: mysqlPromise.Connection): Promise<string> {
66
+ const [[versionResult]] = await retriedQuery({
67
+ connection,
68
+ query: `SELECT VERSION() as version`
69
+ });
70
+
71
+ return versionResult.version as string;
72
+ }
73
+
74
+ /**
75
+ * Check if the current MySQL version is newer or equal to the target version.
76
+ * @param version
77
+ * @param minimumVersion
78
+ */
79
+ export function isVersionAtLeast(version: string, minimumVersion: string): boolean {
80
+ const coercedVersion = coerce(version);
81
+ const coercedMinimumVersion = coerce(minimumVersion);
82
+
83
+ return gte(coercedVersion!, coercedMinimumVersion!, { loose: true });
84
+ }