@@ -3,16 +3,18 @@ var fs = require('fs');
33var path = require ( 'path' ) ;
44var script = path . basename ( __filename ) ;
55
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 ) {
89 var args = [ ] ;
910 args [ 0 ] = process . argv [ 0 ] . indexOf ( ' ' ) !== - 1
1011 ? '"' + process . argv [ 0 ] + '"'
1112 : process . argv [ 0 ] ;
1213 args [ 1 ] = process . argv [ 1 ] . indexOf ( ' ' ) !== - 1
1314 ? '"' + process . argv [ 1 ] + '"'
1415 : 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' ) ;
1618 console . error ( 'Usage: ' + args . join ( ' ' ) ) ;
1719 process . exit ( 1 ) ;
1820}
@@ -21,14 +23,26 @@ var codes = [];
2123var targetFile = path . join ( __dirname , '..' , 'lib' , 'protocol' , 'constants' , 'errors.js' ) ;
2224var previous = fs . existsSync ( targetFile ) ? require ( targetFile ) : { } ;
2325var 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+ }
2536
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' ) ) ;
2943keepUnusedCodes ( previous , codes ) ;
3044
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' ) ;
3246
3347var alignment = codes . reduce ( maxLength , 0 ) ;
3448for ( var i = 0 ; i < codes . length ; i ++ ) {
@@ -48,6 +62,12 @@ for (var i = 0; i < codes.length; i++) {
4862
4963console . log ( 'Wrote constants to ' + targetFile ) ;
5064
65+ function keepOldDefinitionIfMarkedObsolete ( codes , num , code ) {
66+ if ( ! codes [ num ] || ! code . startsWith ( 'OBSOLETE_' ) ) {
67+ codes [ num ] = code ;
68+ }
69+ }
70+
5171function appendGlobalErrorCodes ( srcDir , codes ) {
5272 var headerFile = path . join ( srcDir , 'include' , 'mysys_err.h' ) ;
5373 var code = '' ;
@@ -70,7 +90,7 @@ function appendGlobalErrorCodes(srcDir, codes) {
7090 break ;
7191 }
7292
73- codes [ num ] = code ;
93+ keepOldDefinitionIfMarkedObsolete ( codes , num , code ) ;
7494 }
7595
7696 return codes ;
@@ -98,24 +118,22 @@ function appendDatabseErrorCodes(srcDir, codes) {
98118 break ;
99119 }
100120
101- codes [ num ] = code ;
121+ keepOldDefinitionIfMarkedObsolete ( codes , num , code ) ;
102122 }
103123
104124 return codes ;
105125}
106126
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, '' ) ;
111129 var sections = contents . split ( / ^ s t a r t - e r r o r - n u m b e r ( \d + ) $ / m) ;
112130
113131 for ( var i = 1 ; i < sections . length ; i += 2 ) {
114132 var offset = Number ( sections [ i ] ) ;
115133 var names = sections [ i + 1 ] . match ( / ^ ( [ A - Z 0 - 9 _ ] + ) / mg) . map ( fixupCode ) ;
116134
117135 for ( var j = 0 ; j < names . length ; j ++ ) {
118- codes [ offset + j ] = names [ j ] ;
136+ keepOldDefinitionIfMarkedObsolete ( codes , offset + j , names [ j ] ) ;
119137 }
120138 }
121139
0 commit comments