@powersync/service-module-mysql 0.5.3 → 0.5.5
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 +14 -0
- package/dev/docker/mysql/docker-compose-57.yaml +17 -0
- package/dev/docker/mysql/init-scripts/mysql_57.sql +12 -0
- package/dist/common/mysql-to-sqlite.js +10 -4
- package/dist/common/mysql-to-sqlite.js.map +1 -1
- package/package.json +7 -7
- package/src/common/mysql-to-sqlite.ts +10 -5
- package/test/src/mysql-to-sqlite.test.ts +13 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @powersync/service-module-mysql
|
|
2
2
|
|
|
3
|
+
## 0.5.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [a9b79a5]
|
|
8
|
+
- @powersync/service-core@1.10.2
|
|
9
|
+
|
|
10
|
+
## 0.5.4
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- a6dee95: Fixed mysql varchar column identification for binary encoded varchar columns
|
|
15
|
+
- @powersync/service-core@1.10.1
|
|
16
|
+
|
|
3
17
|
## 0.5.3
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
services:
|
|
2
|
+
mysql:
|
|
3
|
+
image: mysql:5.7
|
|
4
|
+
environment:
|
|
5
|
+
MYSQL_ROOT_PASSWORD: root_password
|
|
6
|
+
MYSQL_DATABASE: mydatabase
|
|
7
|
+
MYSQL_USER: myuser
|
|
8
|
+
MYSQL_PASSWORD: mypassword
|
|
9
|
+
ports:
|
|
10
|
+
- '3306:3306'
|
|
11
|
+
volumes:
|
|
12
|
+
- ./init-scripts/my.cnf:/etc/mysql/my.cnf
|
|
13
|
+
- ./init-scripts/mysql_57.sql:/docker-entrypoint-initdb.d/init_user.sql
|
|
14
|
+
- mysql_data_57:/var/lib/mysql
|
|
15
|
+
|
|
16
|
+
volumes:
|
|
17
|
+
mysql_data_57:
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
-- Create a user with necessary privileges
|
|
2
|
+
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'good_password';
|
|
3
|
+
|
|
4
|
+
-- Grant replication client privilege
|
|
5
|
+
GRANT REPLICATION SLAVE, REPLICATION CLIENT, RELOAD ON *.* TO 'repl_user'@'%';
|
|
6
|
+
GRANT REPLICATION SLAVE, REPLICATION CLIENT, RELOAD ON *.* TO 'myuser'@'%';
|
|
7
|
+
|
|
8
|
+
-- Grant access to the specific database
|
|
9
|
+
GRANT ALL PRIVILEGES ON mydatabase.* TO 'repl_user'@'%';
|
|
10
|
+
|
|
11
|
+
-- Apply changes
|
|
12
|
+
FLUSH PRIVILEGES;
|
|
@@ -33,12 +33,13 @@ export function toColumnDescriptors(columns) {
|
|
|
33
33
|
}
|
|
34
34
|
export function toColumnDescriptorFromFieldPacket(column) {
|
|
35
35
|
let typeId = column.type;
|
|
36
|
-
const BINARY_FLAG = 128;
|
|
37
36
|
const MYSQL_ENUM_FLAG = 256;
|
|
38
37
|
const MYSQL_SET_FLAG = 2048;
|
|
38
|
+
const MYSQL_BINARY_ENCODING = 'binary';
|
|
39
39
|
switch (column.type) {
|
|
40
|
+
// STRING is overloaded to also include Binary, Enum and Set types
|
|
40
41
|
case mysql.Types.STRING:
|
|
41
|
-
if (
|
|
42
|
+
if (column.encoding === MYSQL_BINARY_ENCODING) {
|
|
42
43
|
typeId = ADDITIONAL_MYSQL_TYPES.BINARY;
|
|
43
44
|
}
|
|
44
45
|
else if ((column.flags & MYSQL_ENUM_FLAG) !== 0) {
|
|
@@ -48,11 +49,13 @@ export function toColumnDescriptorFromFieldPacket(column) {
|
|
|
48
49
|
typeId = mysql.Types.SET;
|
|
49
50
|
}
|
|
50
51
|
break;
|
|
52
|
+
// VAR_STRING represents both VARCHAR and VARBINARY types
|
|
51
53
|
case mysql.Types.VAR_STRING:
|
|
52
|
-
typeId =
|
|
54
|
+
typeId = column.encoding === MYSQL_BINARY_ENCODING ? ADDITIONAL_MYSQL_TYPES.VARBINARY : column.type;
|
|
53
55
|
break;
|
|
56
|
+
// BLOB is also used to represent the TEXT type when the encoding is not binary
|
|
54
57
|
case mysql.Types.BLOB:
|
|
55
|
-
typeId =
|
|
58
|
+
typeId = column.encoding !== MYSQL_BINARY_ENCODING ? ADDITIONAL_MYSQL_TYPES.TEXT : column.type;
|
|
56
59
|
break;
|
|
57
60
|
}
|
|
58
61
|
const columnType = MySQLTypesMap[typeId];
|
|
@@ -65,13 +68,16 @@ export function toColumnDescriptorFromFieldPacket(column) {
|
|
|
65
68
|
export function toColumnDescriptorFromDefinition(column) {
|
|
66
69
|
let typeId = column.type;
|
|
67
70
|
switch (column.type) {
|
|
71
|
+
// STRING is overloaded to also include Binary types, ENUM and SET is already identified upstream in Zongji
|
|
68
72
|
case mysql.Types.STRING:
|
|
69
73
|
typeId = !column.charset ? ADDITIONAL_MYSQL_TYPES.BINARY : column.type;
|
|
70
74
|
break;
|
|
75
|
+
// VAR_STRING represents both VARCHAR and VARBINARY types
|
|
71
76
|
case mysql.Types.VAR_STRING:
|
|
72
77
|
case mysql.Types.VARCHAR:
|
|
73
78
|
typeId = !column.charset ? ADDITIONAL_MYSQL_TYPES.VARBINARY : column.type;
|
|
74
79
|
break;
|
|
80
|
+
// BLOB is also used to represent the TEXT type when a charset is specified
|
|
75
81
|
case mysql.Types.BLOB:
|
|
76
82
|
typeId = column.charset ? ADDITIONAL_MYSQL_TYPES.TEXT : column.type;
|
|
77
83
|
break;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"mysql-to-sqlite.js","sourceRoot":"","sources":["../../src/common/mysql-to-sqlite.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.5.
|
|
5
|
+
"version": "0.5.5",
|
|
6
6
|
"license": "FSL-1.1-Apache-2.0",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"type": "module",
|
|
@@ -30,18 +30,18 @@
|
|
|
30
30
|
"uri-js": "^4.4.1",
|
|
31
31
|
"uuid": "^9.0.1",
|
|
32
32
|
"@powersync/lib-services-framework": "0.5.3",
|
|
33
|
-
"@powersync/service-core": "1.10.
|
|
34
|
-
"@powersync/service-sync-rules": "0.25.0",
|
|
33
|
+
"@powersync/service-core": "1.10.2",
|
|
35
34
|
"@powersync/service-types": "0.9.0",
|
|
36
|
-
"@powersync/service-jsonbig": "0.17.10"
|
|
35
|
+
"@powersync/service-jsonbig": "0.17.10",
|
|
36
|
+
"@powersync/service-sync-rules": "0.25.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/semver": "^7.5.4",
|
|
40
40
|
"@types/async": "^3.2.24",
|
|
41
41
|
"@types/uuid": "^9.0.4",
|
|
42
|
-
"@powersync/service-core-tests": "0.8.
|
|
43
|
-
"@powersync/service-module-mongodb-storage": "0.8.
|
|
44
|
-
"@powersync/service-module-postgres-storage": "0.6.
|
|
42
|
+
"@powersync/service-core-tests": "0.8.2",
|
|
43
|
+
"@powersync/service-module-mongodb-storage": "0.8.2",
|
|
44
|
+
"@powersync/service-module-postgres-storage": "0.6.2"
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
47
|
"build": "tsc -b",
|
|
@@ -41,13 +41,14 @@ export function toColumnDescriptors(columns: mysql.FieldPacket[] | TableMapEntry
|
|
|
41
41
|
|
|
42
42
|
export function toColumnDescriptorFromFieldPacket(column: mysql.FieldPacket): ColumnDescriptor {
|
|
43
43
|
let typeId = column.type!;
|
|
44
|
-
const BINARY_FLAG = 128;
|
|
45
44
|
const MYSQL_ENUM_FLAG = 256;
|
|
46
45
|
const MYSQL_SET_FLAG = 2048;
|
|
46
|
+
const MYSQL_BINARY_ENCODING = 'binary';
|
|
47
47
|
|
|
48
48
|
switch (column.type) {
|
|
49
|
+
// STRING is overloaded to also include Binary, Enum and Set types
|
|
49
50
|
case mysql.Types.STRING:
|
|
50
|
-
if (
|
|
51
|
+
if (column.encoding === MYSQL_BINARY_ENCODING) {
|
|
51
52
|
typeId = ADDITIONAL_MYSQL_TYPES.BINARY;
|
|
52
53
|
} else if (((column.flags as number) & MYSQL_ENUM_FLAG) !== 0) {
|
|
53
54
|
typeId = mysql.Types.ENUM;
|
|
@@ -55,12 +56,13 @@ export function toColumnDescriptorFromFieldPacket(column: mysql.FieldPacket): Co
|
|
|
55
56
|
typeId = mysql.Types.SET;
|
|
56
57
|
}
|
|
57
58
|
break;
|
|
58
|
-
|
|
59
|
+
// VAR_STRING represents both VARCHAR and VARBINARY types
|
|
59
60
|
case mysql.Types.VAR_STRING:
|
|
60
|
-
typeId =
|
|
61
|
+
typeId = column.encoding === MYSQL_BINARY_ENCODING ? ADDITIONAL_MYSQL_TYPES.VARBINARY : column.type;
|
|
61
62
|
break;
|
|
63
|
+
// BLOB is also used to represent the TEXT type when the encoding is not binary
|
|
62
64
|
case mysql.Types.BLOB:
|
|
63
|
-
typeId =
|
|
65
|
+
typeId = column.encoding !== MYSQL_BINARY_ENCODING ? ADDITIONAL_MYSQL_TYPES.TEXT : column.type;
|
|
64
66
|
break;
|
|
65
67
|
}
|
|
66
68
|
|
|
@@ -77,13 +79,16 @@ export function toColumnDescriptorFromDefinition(column: ColumnDefinition): Colu
|
|
|
77
79
|
let typeId = column.type;
|
|
78
80
|
|
|
79
81
|
switch (column.type) {
|
|
82
|
+
// STRING is overloaded to also include Binary types, ENUM and SET is already identified upstream in Zongji
|
|
80
83
|
case mysql.Types.STRING:
|
|
81
84
|
typeId = !column.charset ? ADDITIONAL_MYSQL_TYPES.BINARY : column.type;
|
|
82
85
|
break;
|
|
86
|
+
// VAR_STRING represents both VARCHAR and VARBINARY types
|
|
83
87
|
case mysql.Types.VAR_STRING:
|
|
84
88
|
case mysql.Types.VARCHAR:
|
|
85
89
|
typeId = !column.charset ? ADDITIONAL_MYSQL_TYPES.VARBINARY : column.type;
|
|
86
90
|
break;
|
|
91
|
+
// BLOB is also used to represent the TEXT type when a charset is specified
|
|
87
92
|
case mysql.Types.BLOB:
|
|
88
93
|
typeId = column.charset ? ADDITIONAL_MYSQL_TYPES.TEXT : column.type;
|
|
89
94
|
break;
|
|
@@ -40,6 +40,9 @@ describe('MySQL Data Types', () => {
|
|
|
40
40
|
|
|
41
41
|
char_col CHAR(10),
|
|
42
42
|
varchar_col VARCHAR(255),
|
|
43
|
+
varchar_binary_encoding_col VARCHAR(255) CHARACTER SET binary,
|
|
44
|
+
varchar_with_bin_collation_col VARCHAR(255) COLLATE utf8mb4_bin,
|
|
45
|
+
|
|
43
46
|
binary_col BINARY(16),
|
|
44
47
|
varbinary_col VARBINARY(256),
|
|
45
48
|
tinyblob_col TINYBLOB,
|
|
@@ -145,6 +148,8 @@ INSERT INTO test_data (
|
|
|
145
148
|
INSERT INTO test_data (
|
|
146
149
|
char_col,
|
|
147
150
|
varchar_col,
|
|
151
|
+
varchar_binary_encoding_col,
|
|
152
|
+
varchar_with_bin_collation_col,
|
|
148
153
|
binary_col,
|
|
149
154
|
varbinary_col,
|
|
150
155
|
tinyblob_col,
|
|
@@ -159,7 +164,9 @@ INSERT INTO test_data (
|
|
|
159
164
|
) VALUES (
|
|
160
165
|
'CharData', -- CHAR(10) with padding spaces
|
|
161
166
|
'Variable character data',-- VARCHAR(255)
|
|
162
|
-
'
|
|
167
|
+
'Varchar with binary encoding', -- VARCHAR(255) with binary encoding
|
|
168
|
+
'Variable character data with bin collation', -- VARCHAR(255) with bin collation
|
|
169
|
+
'ShortBin', -- BINARY(16)
|
|
163
170
|
'VariableBinaryData', -- VARBINARY(256)
|
|
164
171
|
'TinyBlobData', -- TINYBLOB
|
|
165
172
|
'BlobData', -- BLOB
|
|
@@ -177,6 +184,11 @@ INSERT INTO test_data (
|
|
|
177
184
|
const expectedResult = {
|
|
178
185
|
char_col: 'CharData',
|
|
179
186
|
varchar_col: 'Variable character data',
|
|
187
|
+
varchar_binary_encoding_col: new Uint8Array([
|
|
188
|
+
86, 97, 114, 99, 104, 97, 114, 32, 119, 105, 116, 104, 32, 98, 105, 110, 97, 114, 121, 32, 101, 110, 99, 111,
|
|
189
|
+
100, 105, 110, 103
|
|
190
|
+
]),
|
|
191
|
+
varchar_with_bin_collation_col: 'Variable character data with bin collation',
|
|
180
192
|
binary_col: new Uint8Array([83, 104, 111, 114, 116, 66, 105, 110, 0, 0, 0, 0, 0, 0, 0, 0]), // Pad with 0
|
|
181
193
|
varbinary_col: new Uint8Array([
|
|
182
194
|
0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61
|