@@ -3,16 +3,18 @@ var fs = require('fs');
3
3
var path = require ( 'path' ) ;
4
4
var script = path . basename ( __filename ) ;
5
5
6
- var srcDir = process . argv [ 2 ] ;
7
- if ( ! srcDir ) {
6
+ var srcDir5 = process . argv [ 2 ] ;
7
+ var srcDir8 = process . argv [ 3 ] ;
8
+ if ( ! srcDir5 || ! srcDir8 ) {
8
9
var args = [ ] ;
9
10
args [ 0 ] = process . argv [ 0 ] . indexOf ( ' ' ) !== - 1
10
11
? '"' + process . argv [ 0 ] + '"'
11
12
: process . argv [ 0 ] ;
12
13
args [ 1 ] = process . argv [ 1 ] . indexOf ( ' ' ) !== - 1
13
14
? '"' + process . argv [ 1 ] + '"'
14
15
: process . argv [ 1 ] ;
15
- args [ 2 ] = path . join ( 'path' , 'to' , 'mysql' , 'src' ) ;
16
+ args [ 2 ] = path . join ( 'path' , 'to' , 'mysql5' , 'src' ) ;
17
+ args [ 3 ] = path . join ( 'path' , 'to' , 'mysql8' , 'src' ) ;
16
18
console . error ( 'Usage: ' + args . join ( ' ' ) ) ;
17
19
process . exit ( 1 ) ;
18
20
}
@@ -21,14 +23,26 @@ var codes = [];
21
23
var targetFile = path . join ( __dirname , '..' , 'lib' , 'protocol' , 'constants' , 'errors.js' ) ;
22
24
var previous = fs . existsSync ( targetFile ) ? require ( targetFile ) : { } ;
23
25
var stream = fs . createWriteStream ( targetFile ) ;
24
- var version = extractMySqlVersion ( srcDir ) ;
26
+ var version5 = extractMySqlVersion ( srcDir5 ) ;
27
+ if ( ! version5 . startsWith ( '5.' ) ) {
28
+ console . error ( 'Expected ' + srcDir5 + ' to contain MySQL 5.x.x sources, got ' + version5 ) ;
29
+ process . exit ( 1 ) ;
30
+ }
31
+ var version8 = extractMySqlVersion ( srcDir8 ) ;
32
+ if ( ! version8 . startsWith ( '8.' ) ) {
33
+ console . error ( 'Expected ' + srcDir5 + ' to contain MySQL 8.x.x sources, got ' + version8 ) ;
34
+ process . exit ( 1 ) ;
35
+ }
25
36
26
- appendGlobalErrorCodes ( srcDir , codes ) ;
27
- appendDatabseErrorCodes ( srcDir , codes ) ;
28
- appendSqlErrorCodes ( srcDir , codes ) ;
37
+ appendGlobalErrorCodes ( srcDir5 , codes ) ;
38
+ appendGlobalErrorCodes ( srcDir8 , codes ) ;
39
+ appendDatabseErrorCodes ( srcDir5 , codes ) ;
40
+ appendDatabseErrorCodes ( srcDir8 , codes ) ;
41
+ appendSqlErrorCodes ( srcDir5 , codes , path . join ( srcDir5 , 'sql' , 'share' , 'errmsg-utf8.txt' ) ) ;
42
+ appendSqlErrorCodes ( srcDir8 , codes , path . join ( srcDir8 , 'share' , 'messages_to_clients.txt' ) ) ;
29
43
keepUnusedCodes ( previous , codes ) ;
30
44
31
- stream . write ( '/**\n * MySQL error constants\n *\n * Extracted from version ' + version + '\n *\n * !! Generated by ' + script + ', do not modify by hand !!\n */\n\n' ) ;
45
+ stream . write ( '/**\n * MySQL error constants\n *\n * Extracted from versions ' + version5 + ' and ' + version8 + '\n *\n * !! Generated by ' + script + ', do not modify by hand !!\n */\n\n' ) ;
32
46
33
47
var alignment = codes . reduce ( maxLength , 0 ) ;
34
48
for ( var i = 0 ; i < codes . length ; i ++ ) {
@@ -48,6 +62,12 @@ for (var i = 0; i < codes.length; i++) {
48
62
49
63
console . log ( 'Wrote constants to ' + targetFile ) ;
50
64
65
+ function keepOldDefinitionIfMarkedObsolete ( codes , num , code ) {
66
+ if ( ! codes [ num ] || ! code . startsWith ( 'OBSOLETE_' ) ) {
67
+ codes [ num ] = code ;
68
+ }
69
+ }
70
+
51
71
function appendGlobalErrorCodes ( srcDir , codes ) {
52
72
var headerFile = path . join ( srcDir , 'include' , 'mysys_err.h' ) ;
53
73
var code = '' ;
@@ -70,7 +90,7 @@ function appendGlobalErrorCodes(srcDir, codes) {
70
90
break ;
71
91
}
72
92
73
- codes [ num ] = code ;
93
+ keepOldDefinitionIfMarkedObsolete ( codes , num , code ) ;
74
94
}
75
95
76
96
return codes ;
@@ -98,24 +118,22 @@ function appendDatabseErrorCodes(srcDir, codes) {
98
118
break ;
99
119
}
100
120
101
- codes [ num ] = code ;
121
+ keepOldDefinitionIfMarkedObsolete ( codes , num , code ) ;
102
122
}
103
123
104
124
return codes ;
105
125
}
106
126
107
- function appendSqlErrorCodes ( srcDir , codes ) {
108
- var errorFile = version . startsWith ( "5." ) ?
109
- path . join ( srcDir , 'sql' , 'share' , 'errmsg-utf8.txt' ) : path . join ( srcDir , 'share' , 'messages_to_clients.txt' ) ;
110
- var contents = fs . readFileSync ( errorFile , 'utf-8' ) . replace ( / ^ # .* $ / gm, "" ) ;
127
+ function appendSqlErrorCodes ( srcDir , codes , errorFile ) {
128
+ var contents = fs . readFileSync ( errorFile , 'utf-8' ) . replace ( / ^ # .* $ / gm, '' ) ;
111
129
var sections = contents . split ( / ^ s t a r t - e r r o r - n u m b e r ( \d + ) $ / m) ;
112
130
113
131
for ( var i = 1 ; i < sections . length ; i += 2 ) {
114
132
var offset = Number ( sections [ i ] ) ;
115
133
var names = sections [ i + 1 ] . match ( / ^ ( [ A - Z 0 - 9 _ ] + ) / mg) . map ( fixupCode ) ;
116
134
117
135
for ( var j = 0 ; j < names . length ; j ++ ) {
118
- codes [ offset + j ] = names [ j ] ;
136
+ keepOldDefinitionIfMarkedObsolete ( codes , offset + j , names [ j ] ) ;
119
137
}
120
138
}
121
139
0 commit comments