@powersync/service-module-mysql 0.9.14 → 0.9.16

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 CHANGED
@@ -1,5 +1,25 @@
1
1
  # @powersync/service-module-mysql
2
2
 
3
+ ## 0.9.16
4
+
5
+ ### Patch Changes
6
+
7
+ - bdfd287: Add the `timestamp_max_precision` option for sync rules. It can be set to `seconds`, `milliseconds` or `microseconds` to restrict the precision of synced datetime values.
8
+ - Updated dependencies [8fdbf8d]
9
+ - Updated dependencies [bdfd287]
10
+ - @powersync/service-core@1.18.2
11
+ - @powersync/service-sync-rules@0.29.10
12
+ - @powersync/lib-services-framework@0.7.14
13
+
14
+ ## 0.9.15
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [21b3a41]
19
+ - @powersync/service-sync-rules@0.29.9
20
+ - @powersync/lib-services-framework@0.7.13
21
+ - @powersync/service-core@1.18.1
22
+
3
23
  ## 0.9.14
4
24
 
5
25
  ### Patch Changes
@@ -99,7 +99,7 @@ export function toSQLiteRow(row, columns) {
99
99
  case mysql.Types.DATE:
100
100
  // Only parse the date part
101
101
  {
102
- const date = row[key];
102
+ const date = new Date(row[key]);
103
103
  if (isNaN(date.getTime())) {
104
104
  // Invalid dates, such as 2024-00-00.
105
105
  // we can't do anything meaningful with this, so just use null.
@@ -115,14 +115,18 @@ export function toSQLiteRow(row, columns) {
115
115
  case mysql.Types.TIMESTAMP:
116
116
  case ADDITIONAL_MYSQL_TYPES.TIMESTAMP2:
117
117
  {
118
- const date = row[key];
119
- if (isNaN(date.getTime())) {
118
+ // Source format: "2023-03-06 15:47:00.000" (always in UTC). We:
119
+ // 1. Add the suffix so that `new Date` doesn't interpret the value in the local timezone.
120
+ // 2. Replace the space with `T` to make it a valid ISO format.
121
+ const formattedDate = `${row[key].replace(' ', 'T')}Z`;
122
+ const parsed = new Date(formattedDate);
123
+ if (isNaN(parsed.getTime())) {
120
124
  // Invalid dates, such as 2024-00-00.
121
125
  // we can't do anything meaningful with this, so just use null.
122
126
  result[key] = null;
123
127
  }
124
128
  else {
125
- result[key] = date.toISOString();
129
+ result[key] = new sync_rules.DateTimeValue(formattedDate, parsed.toISOString(), mySqlDateTimeOptions);
126
130
  }
127
131
  }
128
132
  break;
@@ -226,4 +230,9 @@ export function toExpressionTypeFromMySQLType(mysqlType) {
226
230
  return ExpressionType.TEXT;
227
231
  }
228
232
  }
233
+ // We can provide microsecond accuracy, but for backwards compatibility we only offer millisecond accuracy by default.
234
+ const mySqlDateTimeOptions = {
235
+ subSecondPrecision: sync_rules.TimeValuePrecision.microseconds,
236
+ defaultSubSecondPrecision: sync_rules.TimeValuePrecision.milliseconds
237
+ };
229
238
  //# sourceMappingURL=mysql-to-sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mysql-to-sqlite.js","sourceRoot":"","sources":["../../src/common/mysql-to-sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql-to-sqlite.js","sourceRoot":"","sources":["../../src/common/mysql-to-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGpE,MAAM,CAAN,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,8EAAc,CAAA;IACd,gFAAe,CAAA;IACf,yEAAY,CAAA;IACZ,+EAAe,CAAA;IACf,qEAAU,CAAA;AACZ,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,QAMjC;AAED,MAAM,CAAC,MAAM,aAAa,GAA8B,EAAE,CAAC;AAC3D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IACvD,aAAa,CAAC,IAAc,CAAC,GAAG,IAAI,CAAC;AACvC,CAAC;AACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;IAClE,aAAa,CAAC,IAAc,CAAC,GAAG,IAAI,CAAC;AACvC,CAAC;AAKD,MAAM,UAAU,mBAAmB,CAAC,OAA4C;IAC9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,gCAAgC,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,MAAyB;IACzE,IAAI,MAAM,GAAG,MAAM,CAAC,IAAK,CAAC;IAC1B,MAAM,eAAe,GAAG,GAAG,CAAC;IAC5B,MAAM,cAAc,GAAG,IAAI,CAAC;IAC5B,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAEvC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,kEAAkE;QAClE,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM;YACrB,IAAI,MAAM,CAAC,QAAQ,KAAK,qBAAqB,EAAE,CAAC;gBAC9C,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;YACzC,CAAC;iBAAM,IAAI,CAAE,MAAM,CAAC,KAAgB,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9D,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,CAAC;iBAAM,IAAI,CAAE,MAAM,CAAC,KAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3B,CAAC;YACD,MAAM;QACR,yDAAyD;QACzD,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU;YACzB,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YACpG,MAAM;QACR,+EAA+E;QAC/E,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI;YACnB,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAC/F,MAAM;IACV,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,MAAwB;IACvE,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,2GAA2G;QAC3G,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM;YACrB,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YACvE,MAAM;QACR,yDAAyD;QACzD,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;QAC5B,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO;YACtB,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAC1E,MAAM;QACR,2EAA2E;QAC3E,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI;YACnB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YACpE,MAAM;IACV,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,GAAwB,EACxB,OAAsC;IAEtC,IAAI,MAAM,GAAgC,EAAE,CAAC;IAC7C,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,oDAAoD;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAEjC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACtB,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI;oBACnB,2BAA2B;oBAC3B,CAAC;wBACC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;wBAChC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;4BAC1B,qCAAqC;4BACrC,+DAA+D;4BAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC1B,KAAK,sBAAsB,CAAC,SAAS,CAAC;gBACtC,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC3B,KAAK,sBAAsB,CAAC,UAAU;oBACpC,CAAC;wBACC,gEAAgE;wBAChE,2FAA2F;wBAC3F,gEAAgE;wBAChE,MAAM,aAAa,GAAG,GAAI,GAAG,CAAC,GAAG,CAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;wBACnE,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;wBAEvC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;4BAC5B,qCAAqC;4BACrC,+DAA+D;4BAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,oBAAoB,CAAC,CAAC;wBACxG,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI;oBACnB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC5C,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;gBACrB,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC3B,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC7B,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC3B,KAAK,sBAAsB,CAAC,MAAM,CAAC;gBACnC,KAAK,sBAAsB,CAAC,SAAS;oBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;oBACvB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,CAAC;yBAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACxC,2EAA2E;wBAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;gBACvB,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK;oBACpB,qCAAqC;oBACrC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG;oBAClB,oCAAoC;oBACpC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM;gBACR;oBACE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,SAA6B;IACzE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC9C,qEAAqE;IACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,iBAAiB;YACpB,OAAO,cAAc,CAAC,OAAO,CAAC;QAChC,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY,CAAC;QAClB,KAAK,SAAS,CAAC;QACf,KAAK,YAAY,CAAC;QAClB,KAAK,iBAAiB,CAAC;QACvB,KAAK,cAAc,CAAC;QACpB,KAAK,oBAAoB;YACvB,OAAO,cAAc,CAAC,IAAI,CAAC;QAC7B,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,IAAI,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,IAAI,CAAC;QAC7B;YACE,qHAAqH;YACrH,OAAO,cAAc,CAAC,IAAI,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,sHAAsH;AACtH,MAAM,oBAAoB,GAAqC;IAC7D,kBAAkB,EAAE,UAAU,CAAC,kBAAkB,CAAC,YAAY;IAC9D,yBAAyB,EAAE,UAAU,CAAC,kBAAkB,CAAC,YAAY;CACtE,CAAC"}
@@ -39,7 +39,10 @@ export class MySQLConnectionManager extends BaseObserver {
39
39
  host: this.options.hostname,
40
40
  port: this.options.port,
41
41
  user: this.options.username,
42
- password: this.options.password
42
+ password: this.options.password,
43
+ // We want to avoid parsing date/time values to Date, because that drops sub-millisecond precision.
44
+ dateStrings: true,
45
+ timeZone: 'Z'
43
46
  });
44
47
  this.binlogListeners.push(listener);
45
48
  return listener;
@@ -1 +1 @@
1
- {"version":3,"file":"MySQLConnectionManager.js","sourceRoot":"","sources":["../../src/replication/MySQLConnectionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MySQLConnectionManager.js","sourceRoot":"","sources":["../../src/replication/MySQLConnectionManager.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,7 @@ export function createPool(config, options) {
38
38
  decimalNumbers: true,
39
39
  timezone: 'Z', // Ensure no auto timezone manipulation of the dates occur
40
40
  jsonStrings: true, // Return JSON columns as strings
41
+ dateStrings: true, // We parse and format them ourselves
41
42
  ...(options || {})
42
43
  });
43
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mysql-utils.js","sourceRoot":"","sources":["../../src/utils/mysql-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql-utils.js","sourceRoot":"","sources":["../../src/utils/mysql-utils.ts"],"names":[],"mappings":"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"}
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.9.14",
5
+ "version": "0.9.16",
6
6
  "license": "FSL-1.1-ALv2",
7
7
  "main": "dist/index.js",
8
8
  "type": "module",
@@ -22,7 +22,7 @@
22
22
  }
23
23
  },
24
24
  "dependencies": {
25
- "@powersync/mysql-zongji": "^0.5.0",
25
+ "@powersync/mysql-zongji": "^0.6.0",
26
26
  "async": "^3.2.4",
27
27
  "mysql2": "^3.11.0",
28
28
  "node-sql-parser": "^5.3.9",
@@ -30,18 +30,18 @@
30
30
  "ts-codec": "^1.3.0",
31
31
  "uri-js": "^4.4.1",
32
32
  "uuid": "^11.1.0",
33
- "@powersync/lib-services-framework": "0.7.12",
34
- "@powersync/service-core": "1.18.0",
35
- "@powersync/service-sync-rules": "0.29.8",
33
+ "@powersync/lib-services-framework": "0.7.14",
34
+ "@powersync/service-core": "1.18.2",
35
+ "@powersync/service-sync-rules": "0.29.10",
36
36
  "@powersync/service-types": "0.13.3",
37
37
  "@powersync/service-jsonbig": "0.17.12"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/async": "^3.2.24",
41
41
  "@types/semver": "^7.7.1",
42
- "@powersync/service-core-tests": "0.12.14",
43
- "@powersync/service-module-mongodb-storage": "0.12.14",
44
- "@powersync/service-module-postgres-storage": "0.10.14"
42
+ "@powersync/service-core-tests": "0.12.16",
43
+ "@powersync/service-module-mongodb-storage": "0.12.16",
44
+ "@powersync/service-module-postgres-storage": "0.10.16"
45
45
  },
46
46
  "scripts": {
47
47
  "build": "tsc -b",
@@ -117,7 +117,7 @@ export function toSQLiteRow(
117
117
  case mysql.Types.DATE:
118
118
  // Only parse the date part
119
119
  {
120
- const date = row[key] as Date;
120
+ const date = new Date(row[key]);
121
121
  if (isNaN(date.getTime())) {
122
122
  // Invalid dates, such as 2024-00-00.
123
123
  // we can't do anything meaningful with this, so just use null.
@@ -132,13 +132,18 @@ export function toSQLiteRow(
132
132
  case mysql.Types.TIMESTAMP:
133
133
  case ADDITIONAL_MYSQL_TYPES.TIMESTAMP2:
134
134
  {
135
- const date = row[key] as Date;
136
- if (isNaN(date.getTime())) {
135
+ // Source format: "2023-03-06 15:47:00.000" (always in UTC). We:
136
+ // 1. Add the suffix so that `new Date` doesn't interpret the value in the local timezone.
137
+ // 2. Replace the space with `T` to make it a valid ISO format.
138
+ const formattedDate = `${(row[key] as string).replace(' ', 'T')}Z`;
139
+ const parsed = new Date(formattedDate);
140
+
141
+ if (isNaN(parsed.getTime())) {
137
142
  // Invalid dates, such as 2024-00-00.
138
143
  // we can't do anything meaningful with this, so just use null.
139
144
  result[key] = null;
140
145
  } else {
141
- result[key] = date.toISOString();
146
+ result[key] = new sync_rules.DateTimeValue(formattedDate, parsed.toISOString(), mySqlDateTimeOptions);
142
147
  }
143
148
  }
144
149
  break;
@@ -241,3 +246,9 @@ export function toExpressionTypeFromMySQLType(mysqlType: string | undefined): Ex
241
246
  return ExpressionType.TEXT;
242
247
  }
243
248
  }
249
+
250
+ // We can provide microsecond accuracy, but for backwards compatibility we only offer millisecond accuracy by default.
251
+ const mySqlDateTimeOptions: sync_rules.DateTimeSourceOptions = {
252
+ subSecondPrecision: sync_rules.TimeValuePrecision.microseconds,
253
+ defaultSubSecondPrecision: sync_rules.TimeValuePrecision.milliseconds
254
+ };
@@ -53,7 +53,10 @@ export class MySQLConnectionManager extends BaseObserver<MySQLConnectionManagerL
53
53
  host: this.options.hostname,
54
54
  port: this.options.port,
55
55
  user: this.options.username,
56
- password: this.options.password
56
+ password: this.options.password,
57
+ // We want to avoid parsing date/time values to Date, because that drops sub-millisecond precision.
58
+ dateStrings: true,
59
+ timeZone: 'Z'
57
60
  });
58
61
 
59
62
  this.binlogListeners.push(listener);
@@ -49,6 +49,7 @@ export function createPool(config: types.NormalizedMySQLConnectionConfig, option
49
49
  decimalNumbers: true,
50
50
  timezone: 'Z', // Ensure no auto timezone manipulation of the dates occur
51
51
  jsonStrings: true, // Return JSON columns as strings
52
+ dateStrings: true, // We parse and format them ourselves
52
53
  ...(options || {})
53
54
  });
54
55
  }
@@ -1,4 +1,10 @@
1
- import { SqliteInputRow, SqliteRow } from '@powersync/service-sync-rules';
1
+ import {
2
+ applyRowContext,
3
+ CompatibilityContext,
4
+ SqliteInputRow,
5
+ SqliteRow,
6
+ TimeValuePrecision
7
+ } from '@powersync/service-sync-rules';
2
8
  import { afterAll, describe, expect, test } from 'vitest';
3
9
  import { clearTestDb, TEST_CONNECTION_OPTIONS } from './util.js';
4
10
  import { eventIsWriteMutation, eventIsXid } from '@module/replication/zongji/zongji-utils.js';
@@ -33,8 +39,8 @@ describe('MySQL Data Types', () => {
33
39
  serial_col SERIAL,
34
40
 
35
41
  date_col DATE,
36
- datetime_col DATETIME(3),
37
- timestamp_col TIMESTAMP(3),
42
+ datetime_col DATETIME(6),
43
+ timestamp_col TIMESTAMP(6),
38
44
  time_col TIME,
39
45
  year_col YEAR,
40
46
 
@@ -228,8 +234,52 @@ INSERT INTO test_data (
228
234
  year_col: 2023
229
235
  };
230
236
 
231
- expect(databaseRows[0]).toMatchObject(expectedResult);
232
- expect(replicatedRows[0]).toMatchObject(expectedResult);
237
+ expect(applyRowContext(databaseRows[0], CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY)).toMatchObject(
238
+ expectedResult
239
+ );
240
+ expect(applyRowContext(replicatedRows[0], CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY)).toMatchObject(
241
+ expectedResult
242
+ );
243
+ expect(applyRowContext(databaseRows[0], new CompatibilityContext({ edition: 2 }))).toMatchObject(expectedResult);
244
+ expect(applyRowContext(replicatedRows[0], new CompatibilityContext({ edition: 2 }))).toMatchObject(expectedResult);
245
+ });
246
+
247
+ test('Date sub-millisecond precision', async () => {
248
+ await setupTable();
249
+ // Timezone offset is set on the pool to +00:00
250
+ await connectionManager.query(`
251
+ INSERT INTO test_data(datetime_col, timestamp_col)
252
+ VALUES('2023-03-06 15:47:12.123456', '2023-03-06 15:47:12.123456');
253
+ `);
254
+
255
+ const databaseRows = await getDatabaseRows(connectionManager, 'test_data');
256
+ const replicatedRows = await getReplicatedRows();
257
+ const expectedResult = {
258
+ datetime_col: '2023-03-06T15:47:12.123Z',
259
+ timestamp_col: '2023-03-06T15:47:12.123Z'
260
+ };
261
+
262
+ expect(applyRowContext(databaseRows[0], CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY)).toMatchObject(
263
+ expectedResult
264
+ );
265
+ expect(applyRowContext(replicatedRows[0], CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY)).toMatchObject(
266
+ expectedResult
267
+ );
268
+
269
+ const defaultMigratedContext = new CompatibilityContext({ edition: 2 });
270
+ expect(applyRowContext(databaseRows[0], defaultMigratedContext)).toMatchObject(expectedResult);
271
+ expect(applyRowContext(replicatedRows[0], defaultMigratedContext)).toMatchObject(expectedResult);
272
+
273
+ const increasedPrecisionContext = new CompatibilityContext({
274
+ edition: 2,
275
+ maxTimeValuePrecision: TimeValuePrecision.microseconds
276
+ });
277
+ const precisionResult = {
278
+ datetime_col: '2023-03-06T15:47:12.123456Z',
279
+ timestamp_col: '2023-03-06T15:47:12.123456Z'
280
+ };
281
+ expect(applyRowContext(databaseRows[0], increasedPrecisionContext)).toMatchObject(precisionResult);
282
+ expect(applyRowContext(replicatedRows[0], increasedPrecisionContext)).toMatchObject(precisionResult);
233
283
  });
234
284
 
235
285
  test('Date types edge cases mappings', async () => {
@@ -264,8 +314,12 @@ INSERT INTO test_data (
264
314
  const replicatedRows = await getReplicatedRows(expectedResults.length);
265
315
 
266
316
  for (let i = 0; i < expectedResults.length; i++) {
267
- expect(databaseRows[i]).toMatchObject(expectedResults[i]);
268
- expect(replicatedRows[i]).toMatchObject(expectedResults[i]);
317
+ expect(applyRowContext(databaseRows[i], CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY)).toMatchObject(
318
+ expectedResults[i]
319
+ );
320
+ expect(applyRowContext(replicatedRows[i], CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY)).toMatchObject(
321
+ expectedResults[i]
322
+ );
269
323
  }
270
324
  } finally {
271
325
  connection.release;
@@ -312,7 +366,9 @@ async function getReplicatedRows(expectedTransactionsCount?: number): Promise<Sq
312
366
  const zongji = new ZongJi({
313
367
  host: TEST_CONNECTION_OPTIONS.hostname,
314
368
  user: TEST_CONNECTION_OPTIONS.username,
315
- password: TEST_CONNECTION_OPTIONS.password
369
+ password: TEST_CONNECTION_OPTIONS.password,
370
+ dateStrings: true,
371
+ timeZone: 'Z'
316
372
  });
317
373
 
318
374
  const completionPromise = new Promise<SqliteInputRow[]>((resolve, reject) => {