@@ -69,7 +69,7 @@ const reservedFunctions = {
6969 ] ,
7070 // https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions
7171 array : [
72- 'ARRAY' ,
72+ // 'ARRAY',
7373 'ARRAY_CONCAT' ,
7474 'ARRAY_LENGTH' ,
7575 'ARRAY_TO_STRING' ,
@@ -545,6 +545,9 @@ const reservedFunctions = {
545545 ] ,
546546 other : [ 'BQ.JOBS.CANCEL' , 'BQ.REFRESH_MATERIALIZED_VIEW' ] ,
547547 pivot : [ 'PIVOT' , 'UNPIVOT' ] ,
548+ // Data types with parameters like VARCHAR(100)
549+ // https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#parameterized_data_types
550+ dataTypes : [ 'BYTES' , 'NUMERIC' , 'DECIMAL' , 'BIGNUMERIC' , 'BIGDECIMAL' , 'STRING' ] ,
548551} ;
549552
550553/**
@@ -837,10 +840,8 @@ export default class BigQueryFormatter extends Formatter {
837840 reservedBinaryCommands,
838841 reservedJoins,
839842 reservedDependentClauses,
840- reservedKeywords : dedupe ( [
841- ...Object . values ( reservedFunctions ) . flat ( ) ,
842- ...Object . values ( reservedKeywords ) . flat ( ) ,
843- ] ) ,
843+ reservedKeywords : dedupe ( Object . values ( reservedKeywords ) . flat ( ) ) ,
844+ reservedFunctionNames : dedupe ( Object . values ( reservedFunctions ) . flat ( ) ) ,
844845 openParens : [ '(' , '[' ] ,
845846 closeParens : [ ')' , ']' ] ,
846847 stringTypes : [
@@ -867,14 +868,14 @@ function postProcess(tokens: Token[]): Token[] {
867868 return detectArraySubscripts ( combineParameterizedTypes ( tokens ) ) ;
868869}
869870
870- // Converts OFFSET token inside array from RESERVED_COMMAND to RESERVED_KEYWORD
871+ // Converts OFFSET token inside array from RESERVED_COMMAND to RESERVED_FUNCTION_NAME
871872// See: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#array_subscript_operator
872873function detectArraySubscripts ( tokens : Token [ ] ) {
873874 let prevToken = EOF_TOKEN ;
874875 return tokens . map ( token => {
875876 if ( token . value === 'OFFSET' && prevToken . value === '[' ) {
876877 prevToken = token ;
877- return { ...token , type : TokenType . RESERVED_KEYWORD } ;
878+ return { ...token , type : TokenType . RESERVED_FUNCTION_NAME } ;
878879 } else {
879880 prevToken = token ;
880881 return token ;
0 commit comments