Skip to content

Commit cc75c88

Browse files
committed
fix: convert function and as chinese chars in transactsql
1 parent 48ce188 commit cc75c88

File tree

8 files changed

+29
-14
lines changed

8 files changed

+29
-14
lines changed

pegjs/db2.pegjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,9 +1936,9 @@ column_name
19361936
ident_name
19371937
= start:ident_start parts:ident_part* { return start + parts.join(''); }
19381938

1939-
ident_start = [A-Za-z_]
1939+
ident_start = [A-Za-z_\u4e00-\u9fa5]
19401940

1941-
ident_part = [A-Za-z0-9_]
1941+
ident_part = [A-Za-z0-9_$\u4e00-\u9fa5\u00C0-\u017F]
19421942

19431943
// to support column name like `cf1:name` in hbase
19441944
column_part = [A-Za-z0-9_:]

pegjs/flinksql.pegjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2796,9 +2796,9 @@ ident_name
27962796
return start + parts.join('');
27972797
}
27982798

2799-
ident_start = [A-Za-z_]
2799+
ident_start = [A-Za-z_\u4e00-\u9fa5]
28002800

2801-
ident_part = [A-Za-z0-9_\-]
2801+
ident_part = [A-Za-z0-9_\-$\u4e00-\u9fa5\u00C0-\u017F]
28022802

28032803
// to support column name like `cf1:name` in hbase
28042804
column_part = [A-Za-z0-9_]

pegjs/hive.pegjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,9 +1921,9 @@ column_name
19211921
ident_name
19221922
= start:ident_start parts:ident_part* { return start + parts.join(''); }
19231923

1924-
ident_start = [A-Za-z_]
1924+
ident_start = [A-Za-z_\u4e00-\u9fa5]
19251925

1926-
ident_part = [A-Za-z0-9_]
1926+
ident_part = [A-Za-z0-9_$\u4e00-\u9fa5\u00C0-\u017F]
19271927

19281928
// to support column name like `cf1:name` in hbase
19291929
column_part = [A-Za-z0-9_:]

pegjs/mariadb.pegjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2940,9 +2940,9 @@ column_name
29402940
ident_name
29412941
= start:ident_start parts:ident_part* { return start + parts.join(''); }
29422942

2943-
ident_start = [A-Za-z_]
2943+
ident_start = [A-Za-z_\u4e00-\u9fa5]
29442944

2945-
ident_part = [A-Za-z0-9_$]
2945+
ident_part = [A-Za-z0-9_$$\u4e00-\u9fa5\u00C0-\u017F]
29462946

29472947
// to support column name like `cf1:name` in hbase
29482948
column_part = [A-Za-z0-9_:]

pegjs/mysql.pegjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3231,7 +3231,7 @@ column_name
32313231
ident_name
32323232
= start:ident_start parts:ident_part* { return start + parts.join(''); }
32333233

3234-
ident_start = [A-Za-z_]
3234+
ident_start = [A-Za-z_\u4e00-\u9fa5]
32353235

32363236
ident_part = [A-Za-z0-9_$\u0080-\uffff]
32373237

pegjs/transactsql.pegjs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2421,7 +2421,8 @@ column_ref
24212421
obj.db = db[0]
24222422
obj.schema = schema[0]
24232423
}
2424-
columnList.add(`select::${[obj.db, obj.schema, obj.table].join('.')}::${col}`);
2424+
const fullTableName = [obj.db, obj.schema, obj.table].filter(Boolean).join('.') || 'null'
2425+
columnList.add(`select::${fullTableName}::${col}`);
24252426
return {
24262427
type: 'column_ref',
24272428
...obj,
@@ -2524,9 +2525,9 @@ ident_name_list
25242525
return createList(head, tail)
25252526
}
25262527

2527-
ident_start = [A-Za-z_@#]
2528+
ident_start = [A-Za-z_@#\u4e00-\u9fa5]
25282529

2529-
ident_part = [A-Za-z0-9_\-@$]
2530+
ident_part = [A-Za-z0-9_\-@$$\u4e00-\u9fa5\u00C0-\u017F]
25302531

25312532
// to support column name like `cf1:name` in hbase
25322533
column_part = [A-Za-z0-9_:]

pegjs/trino.pegjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3551,7 +3551,7 @@ ident_name
35513551
return start + parts.join('');
35523552
}
35533553

3554-
ident_start = [A-Za-z_]
3554+
ident_start = [A-Za-z_\u4e00-\u9fa5]
35553555

35563556
ident_part = [A-Za-z0-9_$\u0080-\uffff]
35573557

test/transactsql.spec.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,21 @@ describe('transactsql', () => {
374374
'SELECT * INTO #temp_table FROM tableName',
375375
'SELECT * INTO [#temp_table] FROM [tableName]'
376376
]
377-
}
377+
},
378+
{
379+
title: 'convert function',
380+
sql: [
381+
'SELECT a.username FROM users a WHERE a.end_time = CONVERT(VARCHAR,getdate(),23)',
382+
'SELECT [a].[username] FROM [users] AS [a] WHERE [a].[end_time] = CONVERT([VARCHAR], getdate(), 23)',
383+
]
384+
},
385+
{
386+
title: 'column as chinese name',
387+
sql: [
388+
'SELECT a.username 姓名 FROM users a',
389+
'SELECT [a].[username] AS [姓名] FROM [users] AS [a]'
390+
]
391+
},
378392
]
379393
SQL_LIST.forEach(sqlInfo => {
380394
const { title, sql } = sqlInfo

0 commit comments

Comments
 (0)