blob: bef055e30733b0d66742ed9dbd98542042075a1a [file] [log] [blame]
<!--
! Licensed to the Apache Software Foundation (ASF) under one
! or more contributor license agreements. See the NOTICE file
! distributed with this work for additional information
! regarding copyright ownership. The ASF licenses this file
! to you under the Apache License,Version 2.0 (the
! "License"); you may not use this file except in compliance
! with the License. You may obtain a copy of the License at
!
! http://www.apache.org/licenses/LICENSE-2.0
!
! Unless required by applicable law or agreed to in writing,
! software distributed under the License is distributed on an
! "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY
! KIND,either express or implied. See the License for the
! specific language governing permissions and limitations
! under the License.
!-->
<dialect name='${taco.plugin.dialect}' class='${taco.plugin.class}' version='18.1'>
<function-map>
<!-- ********************** -->
<!-- * Numeric functions * -->
<!-- ********************** -->
<function group='numeric' name='ABS' return-type='real'>
<formula>ABS(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='ABS' return-type='int'>
<formula>ABS(%1)</formula>
<argument type='int' />
</function>
<function group='numeric' name='ACOS' return-type='real'>
<formula>ACOS(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='ASIN' return-type='real'>
<formula>ASIN(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='ATAN' return-type='real'>
<formula>ATAN(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='ATAN2' return-type='real'>
<formula>ATAN2(%1,%2)</formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='CEILING' return-type='real'>
<formula>CEILING(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='CEILING' return-type='int'>
<formula>BIGINT(CEILING(%1))</formula>
<argument type='real' />
</function>
<function group='numeric' name='CEILING' return-type='int'>
<formula>CEILING(%1)</formula>
<argument type='int' />
</function>
<function group='numeric' name='COS' return-type='real'>
<formula>COS(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='COT' return-type='real'>
<formula><![CDATA[(CASE WHEN %1!=0 THEN COS(%1)/SIN(%1) ELSE NULL END)]]></formula>
<argument type='real' />
</function>
<function group='numeric' name='DEGREES' return-type='real'>
<formula>DEGREES(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='DIV' return-type='int'>
<formula><![CDATA[(%1 DIV %2)]]></formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='numeric' name='EXP' return-type='real'>
<formula>EXP(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='FLOOR' return-type='real'>
<formula>FLOOR(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='FLOOR' return-type='int'>
<formula>BIGINT(FLOOR(%1))</formula>
<argument type='real' />
</function>
<function group='numeric' name='FLOOR' return-type='int'>
<formula>FLOOR(%1)</formula>
<argument type='int' />
</function>
<function group='numeric' name='HEXBINX' return-type='real'>
<formula><![CDATA[(((CASE WHEN (ABS((%2)-(BIGINT(((%2)/SQRT(3.0)))*SQRT(3.0))))+SQRT(3.0)*((ABS((%1)-(BIGINT(((%1)/3.0))*3.0)))-1.0)>0.0 THEN 1.5 ELSE 0.0 END)-(CASE WHEN ((%1)-(BIGINT(((%1)/3.0))*3.0)<0.0) AND ((CASE WHEN (ABS((%2)-(BIGINT(((%2)/SQRT(3.0)))*SQRT(3.0))))+SQRT(3.0)*((ABS((%1)-(BIGINT(((%1)/3.0))*3.0)))-1.0)>0.0 THEN 1.5 ELSE 0.0 END)>0.0) THEN 3.0 ELSE 0.0 END))+(BIGINT(((%1)/3.0))*3.0))]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='HEXBINY' return-type='real'>
<formula><![CDATA[TRUNC(DOUBLE((((CASE WHEN (ABS((%2)-(BIGINT(((%2)/SQRT(3.0)))*SQRT(3.0))))+SQRT(3.0)*((ABS((%1)-(BIGINT(((%1)/3.0))*3.0)))-1.0)>0.0 THEN SQRT(3.0)/2.0 ELSE 0.0 END)-(CASE WHEN ((%2)-(BIGINT(((%2)/SQRT(3.0)))*SQRT(3.0))<0.0) AND ((CASE WHEN (ABS((%2)-(BIGINT(((%2)/SQRT(3.0)))*SQRT(3.0))))+SQRT(3.0)*((ABS((%1)-(BIGINT(((%1)/3.0))*3.0)))-1.0)>0.0 THEN SQRT(3.0)/2.0 ELSE 0.0 END)>0.0) THEN SQRT(3.0) ELSE 0.0 END))+(BIGINT(((%2)/SQRT(3.0)))*SQRT(3.0)))),3)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='LN' return-type='real'>
<formula><![CDATA[(CASE WHEN %1>0 THEN LN(%1) ELSE NULL END)]]></formula>
<argument type='real' />
</function>
<function group='numeric' name='LOG' return-type='real'>
<formula><![CDATA[(CASE WHEN %1>0 THEN LOG(%1) ELSE NULL END)]]></formula>
<argument type='real' />
</function>
<function group='numeric' name='LOG' return-type='real'>
<formula><![CDATA[(CASE WHEN (%1>0) AND (%2>0) AND (%2!=1) THEN LOG(%1)/LOG(%2) ELSE NULL END)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='LOG2' return-type='real'>
<formula><![CDATA[(CASE WHEN (%1>0) THEN LOG2(%1) ELSE NULL END)]]></formula>
<argument type='real' />
</function>
<function group='numeric' name='MAX' return-type='real'>
<formula>STRICT_MAX([%1,%2])</formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='MAX' return-type='int'>
<formula>STRICT_MAX([%1,%2])</formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='numeric' name='MIN' return-type='real'>
<formula>STRICT_MIN([%1,%2])</formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='MIN' return-type='int'>
<formula>STRICT_MIN([%1,%2])</formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='numeric' name='MOD' return-type='int'>
<formula>(%1 MOD %2)</formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='numeric' name='PI' return-type='real'>
<formula>PI()</formula>
</function>
<function group='numeric' name='POWER' return-type='real'>
<formula><![CDATA[(CASE WHEN (%1<0) AND (FLOOR(%2)!=%2) THEN NULL ELSE POWER(%1,%2) END)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='POWER' return-type='real'>
<formula>POWER(%1,%2)</formula>
<argument type='real' />
<argument type='int' />
</function>
<function group='numeric' name='POWER' return-type='real'>
<formula>POWER(DOUBLE(%1),%2)</formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='numeric' name='RADIANS' return-type='real'>
<formula>RADIANS(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='ROUND' return-type='real'>
<formula>ROUND(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='ROUND' return-type='real'>
<formula>ROUND_HALF_UP(%1,TRUNC(%2,0))</formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='numeric' name='ROUND' return-type='real'>
<formula>ROUND_HALF_UP(%1,%2)</formula>
<argument type='real' />
<argument type='int' />
</function>
<function group='numeric' name='SIGN' return-type='int'>
<formula>SIGN(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='SIN' return-type='real'>
<formula>SIN(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='SQRT' return-type='real'>
<formula><![CDATA[(CASE WHEN (%1<0) THEN NULL ELSE SQRT(%1) END)]]></formula>
<argument type='real' />
</function>
<function group='numeric' name='SQUARE' return-type='real'>
<formula>(%1^2)</formula>
<argument type='real' />
</function>
<function group='numeric' name='SQUARE' return-type='int'>
<formula>(%1^2)</formula>
<argument type='int' />
</function>
<function group='numeric' name='TAN' return-type='real'>
<formula>TAN(%1)</formula>
<argument type='real' />
</function>
<function group='numeric' name='TRUNC' return-type='real'>
<formula>TRUNC(%1,0)</formula>
<argument type='real' />
</function>
<function group='numeric;logical' name='ZN' return-type='real'>
<formula>COALESCE(%1,0)</formula>
<argument type='real' />
</function>
<function group='numeric;logical' name='ZN' return-type='int'>
<formula>COALESCE(%1,0)</formula>
<argument type='int' />
</function>
<!-- ********************* -->
<!-- * String functions * -->
<!-- ********************* -->
<function group='string' name='ASCII' return-type='int'>
<formula>STRING_TO_CODEPOINT(%1)[0]</formula>
<argument type='str' />
</function>
<function group='string' name='CHAR' return-type='str'>
<formula><![CDATA[(CASE WHEN (%1>=0) AND (%1<256) THEN CODEPOINT_TO_STRING([TRUNC(%1,0)]) ELSE NULL END)]]></formula>
<argument type='real' />
</function>
<function group='string' name='CONTAINS' return-type='bool'>
<formula>CONTAINS(%1,%2)</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='ENDSWITH' return-type='bool'>
<formula>ENDS_WITH(%1,%2)</formula>
<argument type='str' />
<argument type='str' />
</function>
<!-- TODO:FILTER_CONTAINS,FILTER_ENDSWITH,FILTER_STARTSWITH -->
<function group='string' name='FIND' return-type='int'>
<formula><![CDATA[(POSITION(%1,%2)+1)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='FIND' return-type='int'>
<formula><![CDATA[CASE WHEN (TRUNC(%3,0)<1) THEN (POSITION(%1,%2)+1) WHEN (POSITION(SUBSTRING1(%1,TRUNC(%3,0)),%2)>=0) THEN (POSITION(SUBSTRING1(%1,TRUNC(%3,0)),%2)+BIGINT(TRUNC(%3,0))) ELSE 0 END]]></formula>
<argument type='str' />
<argument type='str' />
<argument type='real' />
</function>
<function group='string' name='FINDNTH' return-type='int'>
<!--TODO:IMPLEMENT-->
<formula>TODO_FINDNTH(%1,%2,%3)</formula>
<argument type='str' />
<argument type='str' />
<argument type='real' />
</function>
<function group='string' name='LEFT' return-type='str'>
<formula><![CDATA[CASE WHEN (%2>=0) THEN SUBSTR1(%1,1,TRUNC(%2,0)) ELSE NULL END]]></formula>
<argument type='str' />
<argument type='real' />
</function>
<function group='string' name='LEFT' return-type='str'>
<formula><![CDATA[CASE WHEN (%2>=0) THEN SUBSTR1(%1,1,%2) ELSE NULL END]]></formula>
<argument type='str' />
<argument type='int' />
</function>
<function group='string' name='LEN' return-type='int'>
<formula>LENGTH(%1)</formula>
<argument type='str' />
</function>
<function group='string' name='LOWER' return-type='str'>
<formula>LOWER(%1)</formula>
<argument type='str' />
</function>
<function group='string' name='LTRIM' return-type='str'>
<formula>LTRIM(%1)</formula>
<argument type='str' />
</function>
<function group='string' name='LTRIM_THIS' return-type='str'>
<formula>LTRIM(%1,%2)</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='MAX' return-type='str'>
<formula>STRICT_MAX([%1,%2])</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='MID' return-type='str'>
<formula>SUBSTR1(%1,TRUNC(%2,0))</formula>
<argument type='str' />
<argument type='real' />
</function>
<function group='string' name='MID' return-type='str'>
<formula>SUBSTR1(%1,%2)</formula>
<argument type='str' />
<argument type='int' />
</function>
<function group='string' name='MID' return-type='str'>
<formula>SUBSTR1(%1,TRUNC(%2,0),TRUNC(%3,0))</formula>
<argument type='str' />
<argument type='real' />
<argument type='real' />
</function>
<function group='string' name='MID' return-type='str'>
<formula>SUBSTR1(%1,%2,%3)</formula>
<argument type='str' />
<argument type='int' />
<argument type='int' />
</function>
<function group='string' name='MIN' return-type='str'>
<formula>STRICT_MIN([%1,%2])</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='REGEXP_EXTRACT' return-type='str'>
<formula>REGEXP_MATCHES(%1,%2)[0]</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='REGEXP_EXTRACT_NTH' return-type='str'>
<formula>REGEXP_MATCHES(%1,%2)[%3-1]</formula>
<argument type='str' />
<argument type='str' />
<argument type='localint' />
</function>
<function group='string' name='REGEXP_MATCH' return-type='bool'>
<formula>REGEXP_LIKE(%1,%2)</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='REGEXP_REPLACE' return-type='str'>
<formula>REGEXP_REPLACE(%1,%2,%3)</formula>
<argument type='str' />
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='REPLACE' return-type='str'>
<formula>REPLACE(%1,%2,%3)</formula>
<argument type='str' />
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='RIGHT' return-type='str'>
<formula><![CDATA[(CASE WHEN %2>=0 THEN SUBSTR1(%1,-STRICT_MIN([TRUNC(%2,0),LENGTH(%1)])) ELSE NULL END)]]></formula>
<argument type='str' />
<argument type='real' />
</function>
<function group='string' name='RIGHT' return-type='str'>
<formula><![CDATA[(CASE WHEN %2>=0 THEN SUBSTR1(%1,-STRICT_MIN([%2,LENGTH(%1)])) ELSE NULL END)]]></formula>
<argument type='str' />
<argument type='int' />
</function>
<function group='string' name='RTRIM' return-type='str'>
<formula>RTRIM(%1)</formula>
<argument type='str' />
</function>
<function group='string' name='RTRIM_THIS' return-type='str'>
<formula>RTRIM(%1,%2)</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='SPACE' return-type='str'>
<formula><![CDATA[(CASE WHEN %1>=0 THEN REPEAT(' ',TRUNC(%1,0)) ELSE NULL END)]]></formula>
<argument type='real' />
</function>
<function group='string' name='SPACE' return-type='str'>
<formula><![CDATA[(CASE WHEN %1>=0 THEN REPEAT(' ',%1) ELSE NULL END)]]></formula>
<argument type='int' />
</function>
<function group='string' name='STARTSWITH' return-type='bool'>
<formula>STARTS_WITH(%1,%2)</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='string' name='TRIM' return-type='str'>
<formula>TRIM(%1)</formula>
<argument type='str' />
</function>
<function group='string' name='UPPER' return-type='str'>
<formula>UPPER(%1)</formula>
<argument type='str' />
</function>
<!-- ********************** -->
<!-- * Cast functions * -->
<!-- ********************** -->
<function group='cast' name='DATE' return-type='date'>
<formula><![CDATA[(DATE('1900-01-01')+DURATION_FROM_MS(BIGINT(TRUNC(%1*86400000,0))))]]></formula>
<argument type='real' />
</function>
<function group='cast' name='DATE' return-type='date'>
<formula><![CDATA[(DATE('1900-01-01')+DURATION_FROM_MS(%1*86400000))]]></formula>
<argument type='int' />
</function>
<function group='cast' name='DATE' return-type='date'>
<formula><![CDATA[COALESCE(DATE(%1),DATE(DATETIME(REPLACE(%1,' ','T'))))]]></formula>
<argument type='str' />
</function>
<function group='cast' name='DATE' return-type='date'>
<formula>DATE(DATETIME(%1))</formula>
<argument type='datetime' />
</function>
<function group='cast' name='DATE' return-type='date'>
<formula>DATE(%1)</formula>
<argument type='date' />
</function>
<function group='cast' name='DATETIME' return-type='datetime'>
<formula><![CDATA[(DATETIME(DATE('1900-01-01'))+DURATION_FROM_MS(BIGINT(TRUNC(%1*86400000,0))))]]></formula>
<argument type='real' />
</function>
<function group='cast' name='DATETIME' return-type='datetime'>
<formula><![CDATA[(DATETIME(DATE('1900-01-01'))+DURATION_FROM_MS(%1*86400000))]]></formula>
<argument type='int' />
</function>
<function group='cast' name='DATETIME' return-type='datetime'>
<formula><![CDATA[DATETIME(PRINT_DATETIME(DATETIME(REPLACE(%1,' ','T')),"YYYY-MM-DDThh:mm:ss"))]]></formula>
<argument type='str' />
</function>
<function group='cast' name='DATETIME' return-type='datetime'>
<formula>DATETIME(%1)</formula>
<argument type='datetime' />
</function>
<function group='cast' name='DATETIME' return-type='datetime'>
<formula>DATETIME(%1)</formula>
<argument type='date' />
</function>
<function group='cast' name='FLOAT' return-type='real'>
<formula>DOUBLE(%1)</formula>
<argument type='bool' />
</function>
<function group='cast' name='FLOAT' return-type='real'>
<formula>DOUBLE(%1)</formula>
<argument type='real' />
</function>
<function group='cast' name='FLOAT' return-type='real'>
<formula>DOUBLE(%1)</formula>
<argument type='int' />
</function>
<function group='cast' name='FLOAT' return-type='real'>
<formula>DOUBLE(%1)</formula>
<argument type='str' />
</function>
<function group='cast' name='FLOAT' return-type='real'>
<formula><![CDATA[MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(%1-DATETIME(DATE('1900-01-01'))))/86400000.0]]></formula>
<argument type='datetime' />
</function>
<function group='cast' name='FLOAT' return-type='real'>
<formula><![CDATA[MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(%1-DATE('1900-01-01')))/86400000.0]]></formula>
<argument type='date' />
</function>
<function group='cast' name='INT' return-type='int'>
<formula>BIGINT(%1)</formula>
<argument type='bool' />
</function>
<function group='cast' name='INT' return-type='int'>
<formula>BIGINT(TRUNC(%1,0))</formula>
<argument type='real' />
</function>
<function group='cast' name='INT' return-type='int'>
<formula><![CDATA[COALESCE(BIGINT(%1),BIGINT(TRUNC(DOUBLE(%1),0)))]]></formula>
<argument type='str' />
</function>
<function group='cast' name='INT' return-type='int'>
<formula><![CDATA[GET_DAY(DATETIME(%1)-DATETIME(DATE('1900-01-01')))]]></formula>
<argument type='datetime' />
</function>
<function group='cast' name='INT' return-type='int'>
<formula><![CDATA[GET_DAY(%1-DATE('1900-01-01'))]]></formula>
<argument type='date' />
</function>
<function group='cast' name='REAL' return-type='real'>
<formula>DOUBLE(%1)</formula>
<argument type='int' />
</function>
<function group='cast' name='STR' return-type='str'>
<formula>STRING(TINYINT(%1))</formula>
<argument type='bool' />
</function>
<function group='cast' name='STR' return-type='str'>
<formula>STRING(%1)</formula>
<argument type='real' />
</function>
<function group='cast' name='STR' return-type='str'>
<formula>STRING(%1)</formula>
<argument type='int' />
</function>
<function group='cast' name='STR' return-type='str'>
<formula>STRING(%1)</formula>
<argument type='str' />
</function>
<function group='cast' name='STR' return-type='str'>
<formula><![CDATA[PRINT_DATETIME(DATETIME(%1),'YYYY-MM-DD hh:mm:ss')]]></formula>
<argument type='datetime' />
</function>
<function group='cast' name='STR' return-type='str'>
<formula>STRING(%1)</formula>
<argument type='date' />
</function>
<function group='logical' name='IFNULL' return-type='bool'>
<formula>COALESCE(%1,%2)</formula>
<argument type='bool' />
<argument type='bool' />
</function>
<function group='logical' name='IFNULL' return-type='real'>
<formula>COALESCE(%1,%2)</formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='logical' name='IFNULL' return-type='int'>
<formula>COALESCE(%1,%2)</formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='logical' name='IFNULL' return-type='str'>
<formula>COALESCE(%1,%2)</formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='logical' name='IFNULL' return-type='datetime'>
<formula>COALESCE(%1,%2)</formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='logical' name='IFNULL' return-type='date'>
<formula>COALESCE(%1,%2)</formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='logical' name='IIF' return-type='bool'>
<formula>((%1 AND %2) OR ((NOT %1) AND %3))</formula>
<argument type='bool' />
<argument type='bool' />
<argument type='bool' />
</function>
<function group='logical' name='IIF' return-type='real'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE NULL END)</formula>
<argument type='bool' />
<argument type='real' />
<argument type='real' />
</function>
<function group='logical' name='IIF' return-type='real'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE %4 END)</formula>
<argument type='bool' />
<argument type='real' />
<argument type='real' />
<argument type='real' />
</function>
<function group='logical' name='IIF' return-type='int'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE NULL END)</formula>
<argument type='bool' />
<argument type='int' />
<argument type='int' />
</function>
<function group='logical' name='IIF' return-type='int'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE %4 END)</formula>
<argument type='bool' />
<argument type='int' />
<argument type='int' />
<argument type='int' />
</function>
<function group='logical' name='IIF' return-type='str'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE NULL END)</formula>
<argument type='bool' />
<argument type='str' />
<argument type='str' />
</function>
<function group='logical' name='IIF' return-type='str'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE %4 END)</formula>
<argument type='bool' />
<argument type='str' />
<argument type='str' />
<argument type='str' />
</function>
<function group='logical' name='IIF' return-type='datetime'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE NULL END)</formula>
<argument type='bool' />
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='logical' name='IIF' return-type='datetime'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE %4 END)</formula>
<argument type='bool' />
<argument type='datetime' />
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='logical' name='IIF' return-type='date'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE NULL END)</formula>
<argument type='bool' />
<argument type='date' />
<argument type='date' />
</function>
<function group='logical' name='IIF' return-type='date'>
<formula>(CASE WHEN %1 THEN %2 WHEN NOT %1 THEN %3 ELSE %4 END)</formula>
<argument type='bool' />
<argument type='date' />
<argument type='date' />
<argument type='date' />
</function>
<function group='logical' name='ISNULL' return-type='bool'>
<formula>(%1 IS UNKNOWN)</formula>
<argument type='bool' />
</function>
<function group='logical' name='ISNULL' return-type='bool'>
<formula>(%1 IS UNKNOWN)</formula>
<argument type='real' />
</function>
<function group='logical' name='ISNULL' return-type='bool'>
<formula>(%1 IS UNKNOWN)</formula>
<argument type='str' />
</function>
<function group='logical' name='ISNULL' return-type='bool'>
<formula>(%1 IS UNKNOWN)</formula>
<argument type='datetime' />
</function>
<function group='aggregate' name='AVG' return-type='real'>
<formula>AVG(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='COUNT' return-type='int'>
<formula>COUNT(%1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='bool' />
</function>
<function group='aggregate' name='COUNT' return-type='int'>
<formula>COUNT(%1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='COUNT' return-type='int'>
<formula>COUNT(%1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='str' />
</function>
<function group='aggregate' name='COUNT' return-type='int'>
<formula>COUNT(%1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='datetime' />
</function>
<function group='aggregate' name='COUNT' return-type='int'>
<formula>COUNT(%1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='date' />
</function>
<function group='aggregate' name='COUNTD' return-type='int'>
<formula>COUNT(DISTINCT %1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='bool' />
</function>
<function group='aggregate' name='COUNTD' return-type='int'>
<formula>COUNT(DISTINCT %1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='COUNTD' return-type='int'>
<formula>COUNT(DISTINCT %1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='str' />
</function>
<function group='aggregate' name='COUNTD' return-type='int'>
<formula>COUNT(DISTINCT %1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='datetime' />
</function>
<function group='aggregate' name='COUNTD' return-type='int'>
<formula>COUNT(DISTINCT %1)</formula>
<unagg-formula>(CASE WHEN %1 IS UNKNOWN THEN 0 ELSE 1 END)</unagg-formula>
<argument type='date' />
</function>
<function group='aggregate' name='MAX' return-type='bool'>
<formula>MAX(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='bool' />
</function>
<function group='aggregate' name='MAX' return-type='real'>
<formula>MAX(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='MAX' return-type='int'>
<formula>MAX(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='int' />
</function>
<function group='aggregate' name='MAX' return-type='str'>
<formula>MAX(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='str' />
</function>
<function group='aggregate' name='MAX' return-type='datetime'>
<formula>MAX(%1)</formula>
<unagg-formula>DATETIME(%1)</unagg-formula>
<argument type='datetime' />
</function>
<function group='aggregate' name='MAX' return-type='date'>
<formula>MAX(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='date' />
</function>
<function group='aggregate' name='MIN' return-type='bool'>
<formula>MIN(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='bool' />
</function>
<function group='aggregate' name='MIN' return-type='real'>
<formula>MIN(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='MIN' return-type='int'>
<formula>MIN(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='int' />
</function>
<function group='aggregate' name='MIN' return-type='str'>
<formula>MIN(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='str' />
</function>
<function group='aggregate' name='MIN' return-type='datetime'>
<formula>MIN(%1)</formula>
<unagg-formula>DATETIME(%1)</unagg-formula>
<argument type='datetime' />
</function>
<function group='aggregate' name='MIN' return-type='date'>
<formula>MIN(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='date' />
</function>
<function group='aggregate' name='STDEV' return-type='real'>
<formula>STDDEV_SAMP(%1)</formula>
<unagg-formula>NULL</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='STDEVP' return-type='real'>
<formula>STDDEV_POP(%1)</formula>
<unagg-formula><![CDATA[(CASE WHEN %1 IS UNKNOWN THEN NULL ELSE 0.0 END)]]></unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='SUM' return-type='real'>
<formula>SUM(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='SUM' return-type='int'>
<formula>SUM(%1)</formula>
<unagg-formula>%1</unagg-formula>
<argument type='int' />
</function>
<function group='aggregate' name='VAR' return-type='real'>
<formula>VAR_SAMP(%1)</formula>
<unagg-formula>NULL</unagg-formula>
<argument type='real' />
</function>
<function group='aggregate' name='VARP' return-type='real'>
<formula>VAR_POP(%1)</formula>
<unagg-formula><![CDATA[(CASE WHEN %1 IS UNKNOWN THEN NULL ELSE 0.0 END)]]></unagg-formula>
<argument type='real' />
</function>
<function group='operator' name='!' return-type='bool'>
<formula><![CDATA[(NOT %1)]]></formula>
<argument type='bool' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(%1!=%2)]]></formula>
<argument type='bool' />
<argument type='bool' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(%1!=BOOLEAN(%2)]]></formula>
<argument type='bool' />
<argument type='int' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(BOOLEAN(%1)!=%2]]></formula>
<argument type='int' />
<argument type='bool' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(%1!=%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(%1!=%2)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='operator' name='!=' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)!=DATETIME(%2))]]></formula>
<argument type='str' />
<argument type='datetime' />
</function>
<function group='operator' name='!=' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)!=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='str' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)!=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)!=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='date' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)!=DATETIME(%2))]]></formula>
<argument type='date' />
<argument type='datetime' />
</function>
<function group='operator' name='!=' return-type='bool'>
<formula><![CDATA[(%1!=%2)]]></formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='operator' name='%' return-type='real'>
<formula><![CDATA[(%1 MOD %2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='%' return-type='int'>
<formula><![CDATA[(%1 MOD %2)]]></formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='operator' name='&amp;&amp;' return-type='bool'>
<formula><![CDATA[(%1 AND %2)]]></formula>
<argument type='bool' />
<argument type='bool' />
</function>
<function group='operator' name='*' return-type='real'>
<formula><![CDATA[(DOUBLE(%1)*%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='*' return-type='real'>
<formula><![CDATA[(DOUBLE(%1)*%2)]]></formula>
<argument type='real' />
<argument type='int' />
</function>
<function group='operator' name='*' return-type='real'>
<formula><![CDATA[(%1*DOUBLE(%2))]]></formula>
<argument type='int' />
<argument type='real' />
</function>
<function group='operator' name='*' return-type='int'>
<formula><![CDATA[(BIGINT(%1)*%2)]]></formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='operator' name='+' return-type='real'>
<formula><![CDATA[(DOUBLE(%1)+%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='+' return-type='int'>
<formula><![CDATA[(BIGINT(%1)+%2)]]></formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='operator' name='+' return-type='str'>
<formula><![CDATA[(CASE WHEN %1 IS UNKNOWN OR %2 IS UNKNOWN THEN NULL ELSE (%1||%2) END)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='operator' name='+' return-type='datetime'>
<formula><![CDATA[(DATETIME(%1)+DURATION_FROM_MS(BIGINT(TRUNC(%2*86400000,0))))]]></formula>
<argument type='datetime' />
<argument type='real' />
</function>
<function group='operator' name='+' return-type='date'>
<formula><![CDATA[(%1+DURATION_FROM_MS(%2*86400000))]]></formula>
<argument type='date' />
<argument type='int' />
</function>
<function group='operator' name='-' return-type='real'>
<formula><![CDATA[(-DOUBLE(%1))]]></formula>
<argument type='real' />
</function>
<function group='operator' name='-' return-type='real'>
<formula><![CDATA[(DOUBLE(%1)-%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='-' return-type='real'>
<formula><![CDATA[(MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(%1)-DATETIME(%2)))/86400000.0)]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='-' return-type='int'>
<formula><![CDATA[(-BIGINT(%1))]]></formula>
<argument type='int' />
</function>
<function group='operator' name='-' return-type='int'>
<formula><![CDATA[(BIGINT(%1)-%2)]]></formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='operator' name='-' return-type='datetime'>
<formula><![CDATA[(DATETIME(%1)-DURATION_FROM_MS(BIGINT(TRUNC(%2*86400000,0))))]]></formula>
<argument type='datetime' />
<argument type='real' />
</function>
<function group='operator' name='-' return-type='date'>
<formula><![CDATA[(%1-DURATION_FROM_MS(%2*86400000))]]></formula>
<argument type='date' />
<argument type='int' />
</function>
<function group='operator' name='/' return-type='real'>
<formula><![CDATA[(DOUBLE(%1)/(%2))]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='/' return-type='real'>
<formula><![CDATA[(DOUBLE(%1)/(%2))]]></formula>
<argument type='real' />
<argument type='int' />
</function>
<function group='operator' name='/' return-type='real'>
<formula><![CDATA[(%1/DOUBLE(%2))]]></formula>
<argument type='int' />
<argument type='real' />
</function>
<function group='operator' name='/' return-type='real'>
<formula><![CDATA[(%1/%2)]]></formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<formula><![CDATA[(%1<%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<formula><![CDATA[(%1<%2)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)<DATETIME(%2))]]></formula>
<argument type='str' />
<argument type='datetime' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)<DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='str' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)<DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)<DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='date' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)<DATETIME(%2))]]></formula>
<argument type='date' />
<argument type='datetime' />
</function>
<function group='operator' name='&lt;' return-type='bool'>
<formula><![CDATA[(%1<%2)]]></formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<formula><![CDATA[(%1<=%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<formula><![CDATA[(%1<=%2)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)<=DATETIME(%2))]]></formula>
<argument type='str' />
<argument type='datetime' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)<=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='str' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)<=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)<=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='date' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)<=DATETIME(%2))]]></formula>
<argument type='date' />
<argument type='datetime' />
</function>
<function group='operator' name='&lt;=' return-type='bool'>
<formula><![CDATA[(%1<=%2)]]></formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(%1=%2)]]></formula>
<argument type='bool' />
<argument type='bool' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(%1=BOOLEAN(%2))]]></formula>
<argument type='bool' />
<argument type='int' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(BOOLEAN(%1)=%2)]]></formula>
<argument type='int' />
<argument type='bool' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(%1=%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(%1=%2)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='operator' name='==' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)=DATETIME(%2))]]></formula>
<argument type='str' />
<argument type='datetime' />
</function>
<function group='operator' name='==' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='str' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='date' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)=DATETIME(%2))]]></formula>
<argument type='date' />
<argument type='datetime' />
</function>
<function group='operator' name='==' return-type='bool'>
<formula><![CDATA[(%1=%2)]]></formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<formula><![CDATA[(%1>%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<formula><![CDATA[(%1>%2)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)>DATETIME(%2))]]></formula>
<argument type='str' />
<argument type='datetime' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)>DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='str' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)>DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)>DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='date' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)>DATETIME(%2))]]></formula>
<argument type='date' />
<argument type='datetime' />
</function>
<function group='operator' name='&gt;' return-type='bool'>
<formula><![CDATA[(%1>%2)]]></formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<formula><![CDATA[(%1>=%2)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<formula><![CDATA[(%1>=%2)]]></formula>
<argument type='str' />
<argument type='str' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)>=DATETIME(%2))]]></formula>
<argument type='str' />
<argument type='datetime' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<!-- TODO:string format?-->
<formula><![CDATA[(DATETIME(%1)>=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='str' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)>=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)>=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)>=DATETIME(%2))]]></formula>
<argument type='datetime' />
<argument type='date' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<formula><![CDATA[(DATETIME(%1)>=DATETIME(%2))]]></formula>
<argument type='date' />
<argument type='datetime' />
</function>
<function group='operator' name='&gt;=' return-type='bool'>
<formula><![CDATA[(%1>=%2)]]></formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='operator' name='^^' return-type='real'>
<formula><![CDATA[(CASE WHEN (%1<0) AND (FLOOR(%2)!=%2) THEN NULL ELSE POWER(%1,%2) END)]]></formula>
<argument type='real' />
<argument type='real' />
</function>
<function group='operator' name='^^' return-type='real'>
<formula><![CDATA[(CASE WHEN (%1<0) AND (FLOOR(%2)!=%2) THEN NULL ELSE POWER(%1,%2) END)]]></formula>
<argument type='real' />
<argument type='int' />
</function>
<function group='operator' name='^^' return-type='real'>
<formula>POWER(DOUBLE(%1),%2)</formula>
<argument type='int' />
<argument type='int' />
</function>
<function group='operator' name='||' return-type='bool'>
<formula><![CDATA[(%1 OR %2)]]></formula>
<argument type='bool' />
<argument type='bool' />
</function>
<function group='date' name='DAY' return-type='int'>
<formula>GET_DAY(DATETIME(%1))</formula>
<argument type='datetime' />
</function>
<function group='date' name='ISDATE' return-type='bool'>
<formula><![CDATA[(DATE(%1) IS NOT UNKNOWN)]]></formula>
<argument type='str' />
</function>
<function group='date' name='MAX' return-type='datetime'>
<formula>STRICT_MAX([DATETIME(%1),DATETIME(%2)])</formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='date' name='MAX' return-type='date'>
<formula>STRICT_MAX([%1,%2])</formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='date' name='MIN' return-type='datetime'>
<formula>STRICT_MIN([DATETIME(%1),DATETIME(%2)])</formula>
<argument type='datetime' />
<argument type='datetime' />
</function>
<function group='date' name='MIN' return-type='date'>
<formula>STRICT_MIN([%1,%2])</formula>
<argument type='date' />
<argument type='date' />
</function>
<function group='date' name='MONTH' return-type='int'>
<formula>GET_MONTH(DATETIME(%1))</formula>
<argument type='datetime' />
</function>
<function group='date' name='NOW' return-type='datetime'>
<formula>CURRENT_DATETIME()</formula>
</function>
<function group='date' name='QUARTER' return-type='int'>
<formula>QUARTER_OF_YEAR(DATETIME(%1))</formula>
<argument type='datetime' />
</function>
<function group='date' name='TIMESTAMP_TO_USEC' return-type='int'>
<formula>UNIX_TIME_FROM_DATETIME_IN_SECS(DATETIME(%1))</formula>
<argument type='datetime' />
</function>
<function group='date' name='TODAY' return-type='date'>
<formula>CURRENT_DATE()</formula>
</function>
<function group='date' name='USEC_TO_TIMESTAMP' return-type='datetime'>
<formula>DATETIME_FROM_UNIX_TIME_IN_SECS(%1)</formula>
<argument type='int' />
</function>
<function group='date' name='WEEK' return-type='int'>
<formula>WEEK_OF_YEAR(DATETIME(%1))</formula>
<argument type='datetime' />
</function>
<function group='date' name='YEAR' return-type='int'>
<formula>GET_YEAR(DATETIME(%1))</formula>
<argument type='datetime' />
</function>
<!--TODO:IMPLEMENT-->
<!--function group='date' name='ISOYEAR' return-type='int'>
<formula></formula>
<argument type='datetime' />
</function-->
<!--TODO:IMPLEMENT-->
<!--function group='date' name='ISOQUARTER' return-type='int'>
<formula></formula>
<argument type='datetime' />
</function-->
<!--TODO:IMPLEMENT-->
<!--function group='date' name='ISOWEEK' return-type='int'>
<formula></formula>
<argument type='datetime' />
</function-->
<!--TODO:IMPLEMENT-->
<!--function group='date' name='ISOWEEKDAY' return-type='int'>
<argument type='datetime' />
</function-->
<date-function name='DATEADD' return-type='datetime'>
<!--TODO:IMPLEMENT-->
<!--formula></formula>
<formula part='iso-week'></formula>
<formula part='iso-weekday'></formula>
<formula part='iso-year'></formula>
<formula part='iso-quarter'></formula-->
<formula part='year'><![CDATA[(DATETIME(%3)+DURATION_FROM_MONTHS(BIGINT(TRUNC(%2*12.0,0))))]]></formula>
<formula part='quarter'><![CDATA[(DATETIME(%3)+DURATION_FROM_MONTHS(BIGINT(TRUNC(%2*3.0,0))))]]></formula>
<formula part='month'><![CDATA[(DATETIME(%3)+DURATION_FROM_MONTHS(BIGINT(TRUNC(%2,0))))]]></formula>
<formula part='dayofyear'><![CDATA[(DATETIME(%3)+DURATION_FROM_MS(BIGINT(TRUNC(%2*86400000.0,0))))]]></formula>
<formula part='day'><![CDATA[(DATETIME(%3)+DURATION_FROM_MS(BIGINT(TRUNC(%2*86400000.0,0))))]]></formula>
<formula part='weekday'><![CDATA[(DATETIME(%3)+DURATION_FROM_MS(BIGINT(TRUNC(%2*86400000.0,0))))]]></formula>
<formula part='week'><![CDATA[(DATETIME(%3)+DURATION_FROM_MS(BIGINT(TRUNC(%2*86400000.0*7.0,0))))]]></formula>
<formula part='hour'><![CDATA[(DATETIME(%3)+DURATION_FROM_MS(BIGINT(TRUNC(%2*3600000.0,0))))]]></formula>
<formula part='minute'><![CDATA[(DATETIME(%3)+DURATION_FROM_MS(BIGINT(TRUNC(%2*60000.0,0))))]]></formula>
<formula part='second'><![CDATA[(DATETIME(%3)+DURATION_FROM_MS(BIGINT(TRUNC(%2*1000.0,0))))]]></formula>
<argument type='localstr' />
<argument type='real' />
<argument type='datetime' />
</date-function>
<date-function name='DATEDIFF' return-type='int'>
<formula part='year'><![CDATA[(GET_YEAR(DATETIME(%3))-GET_YEAR(DATETIME(%2)))]]></formula>
<formula part='quarter'><![CDATA[BIGINT((4*GET_YEAR(DATETIME(%3))+TRUNC((GET_MONTH(DATETIME(%3))-1)/3+1,0))-(4*GET_YEAR(DATETIME(%2))+TRUNC((GET_MONTH(DATETIME(%2))-1)/3+1,0)))]]></formula>
<formula part='month'><![CDATA[((12*GET_YEAR(DATETIME(%3))+GET_MONTH(DATETIME(%3)))-(12*GET_YEAR(DATETIME(%2))+GET_MONTH(DATETIME(%2))))]]></formula>
<formula part='dayofyear'><![CDATA[(MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(%3)-DATETIME(%2))) DIV 86400000)]]></formula>
<formula part='day'><![CDATA[(MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(%3)-DATETIME(%2))) DIV 86400000)]]></formula>
<formula part='weekday'><![CDATA[(MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(%3)-DATETIME(%2))) DIV 86400000)]]></formula>
<formula part='week'><![CDATA[(BIGINT(TRUNC(GET_DAY((DATETIME(%3)-DURATION_FROM_MS((DAY_OF_WEEK(DATETIME(%3))-1)*86400000))-(DATETIME(%2)-DURATION_FROM_MS((DAY_OF_WEEK(DATETIME(%2))-1)*86400000)))/7,0)))]]></formula>
<formula part='hour'><![CDATA[(MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(%3)-DATETIME(%2))) DIV 3600000)]]></formula>
<formula part='minute'><![CDATA[(MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(%3)-DATETIME(%2))) DIV 60000)]]></formula>
<formula part='second'><![CDATA[(MS_FROM_DAY_TIME_DURATION(GET_DAY_TIME_DURATION(DATETIME(%3)-DATETIME(%2))) DIV 1000)]]></formula>
<argument type='localstr' />
<argument type='datetime' />
<argument type='datetime' />
</date-function>
<date-function name='DATEDIFF' return-type='int'>
<formula part='week'><![CDATA[(BIGINT(TRUNC(GET_DAY((DATETIME(%3)-DURATION_FROM_MS((DAY_OF_WEEK(DATETIME(%3),%4)-1)*86400000))-(DATETIME(%2)-DURATION_FROM_MS((DAY_OF_WEEK(DATETIME(%2),%4)-1)*86400000)))/7,0)))]]></formula>
<argument type='localstr' />
<argument type='datetime' />
<argument type='datetime' />
<argument type='localstr' />
</date-function>
<date-function name='DATENAME' return-type='str'>
<formula><![CDATA[PRINT_DATETIME(DATETIME(%2),'%1')]]></formula>
<formula part='year'><![CDATA[STRING(GET_YEAR(DATETIME(%2)))]]></formula>
<formula part='quarter'><![CDATA[STRING(QUARTER_OF_YEAR(DATETIME(%2)))]]></formula>
<formula part='month'><![CDATA[PRINT_DATETIME(DATETIME(%2),'MMMM')]]></formula>
<formula part='dayofyear'><![CDATA[STRING(DAY_OF_YEAR(DATETIME(%2)))]]></formula>
<formula part='day'><![CDATA[STRING(GET_DAY(DATETIME(%2)))]]></formula>
<formula part='weekday'><![CDATA[STRING(DAY_OF_WEEK(DATETIME(%2)))]]></formula>
<formula part='week'><![CDATA[STRING(WEEK_OF_YEAR(DATETIME(%2)))]]></formula>
<formula part='hour'><![CDATA[STRING(GET_HOUR(DATETIME(%2)))]]></formula>
<formula part='minute'><![CDATA[STRING(GET_MINUTE(DATETIME(%2)))]]></formula>
<formula part='second'><![CDATA[STRING(GET_SECOND(DATETIME(%2)))]]></formula>
<argument type='localstr' />
<argument type='datetime' />
</date-function>
<date-function name='DATENAME' return-type='str'>
<formula part='week'><![CDATA[STRING(WEEK_OF_YEAR(DATETIME(%2),%3))]]></formula>
<argument type='localstr' />
<argument type='datetime' />
<argument type='localstr' />
</date-function>
<date-function name='DATEPARSE' return-type='datetime'>
<formula>DATETIME(%2,'%1')</formula>
<argument type='localstr' />
<argument type='str' />
</date-function>
<date-function name='DATEPART' return-type='int'>
<formula part='year'>GET_YEAR(DATETIME(%2))</formula>
<formula part='quarter'>QUARTER_OF_YEAR(DATETIME(%2))</formula>
<formula part='month'>GET_MONTH(DATETIME(%2))</formula>
<formula part='dayofyear'>DAY_OF_YEAR(DATETIME(%2))</formula>
<formula part='day'>GET_DAY(DATETIME(%2))</formula>
<formula part='weekday'>DAY_OF_WEEK(DATETIME(%2))</formula>
<formula part='week'>WEEK_OF_YEAR(DATETIME(%2))</formula>
<formula part='hour'>GET_HOUR(DATETIME(%2))</formula>
<formula part='minute'>GET_MINUTE(DATETIME(%2))</formula>
<formula part='second'>GET_SECOND(DATETIME(%2))</formula>
<argument type='localstr' />
<argument type='datetime' />
</date-function>
<date-function name='DATEPART' return-type='int'>
<formula part='week'><![CDATA[WEEK_OF_YEAR(DATETIME(%2),%3)]]></formula>
<argument type='localstr' />
<argument type='datetime' />
<argument type='localstr' />
</date-function>
<date-function name='DATETRUNC' return-type='datetime'>
<formula part='year'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"),0,4)||"-01-01T00:00:00")</formula>
<formula part='quarter'>PARSE_DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-Q-DDThh:mm:ss"),0,6)||"-01T00:00:00","YYYY-Q-DDThh:mm:ss")</formula>
<formula part='month'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"),0,7)||"-01T00:00:00")</formula>
<formula part='dayofyear'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"),0,10)||"T00:00:00")</formula>
<formula part='day'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"),0,10)||"T00:00:00")</formula>
<formula part='weekday'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"),0,10)||"T00:00:00")</formula>
<formula part='week'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2)-DURATION_FROM_MS((DAY_OF_WEEK(DATETIME(%2))-1)*86400000),"YYYY-MM-DDThh:mm:ss"),0,10)||"T00:00:00")</formula>
<formula part='hour'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"),0,13)||":00:00")</formula>
<formula part='minute'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"),0,16)||":00")</formula>
<formula part='second'>DATETIME(PRINT_DATETIME(DATETIME(%2),"YYYY-MM-DDThh:mm:ss"))</formula>
<argument type='localstr' />
<argument type='datetime' />
</date-function>
<date-function name='DATETRUNC' return-type='datetime'>
<formula part='week'>DATETIME(SUBSTR(PRINT_DATETIME(DATETIME(%2)-DURATION_FROM_MS((DAY_OF_WEEK(DATETIME(%2),%3)-1)*86400000),"YYYY-MM-DDThh:mm:ss"),0,10)||"T00:00:00")</formula>
<argument type='localstr' />
<argument type='datetime' />
<argument type='localstr' />
</date-function>
<native-split-function>
<formula part='left'>SPLIT(%1,%2)[%3-1]</formula>
<formula part='right'>REVERSE(SPLIT(REVERSE(%1),REVERSE(%2))[%3*(-1)-1])</formula>
</native-split-function>
</function-map>
<supported-aggregations>
<aggregation value='AGG_COUNT'/>
<aggregation value='AGG_COUNTD'/>
<aggregation value='AGG_SUM'/>
<aggregation value='AGG_AVG'/>
<aggregation value='AGG_MIN'/>
<aggregation value='AGG_MAX'/>
<aggregation value='AGG_STDEV'/>
<aggregation value='AGG_STDEVP'/>
<aggregation value='AGG_VAR'/>
<aggregation value='AGG_VARP'/>
<aggregation value='AGG_YEAR'/>
<aggregation value='AGG_QTR'/>
<aggregation value='AGG_MONTH'/>
<aggregation value='AGG_DAY'/>
<aggregation value='AGG_WEEK'/>
<aggregation value='AGG_WEEKDAY'/>
<aggregation value='AGG_MONTHYEAR'/>
<aggregation value='AGG_MDY'/>
<aggregation value='AGG_HOUR'/>
<aggregation value='AGG_MINUTE'/>
<aggregation value='AGG_SECOND'/>
<aggregation value='AGG_ISO_YEAR'/>
<aggregation value='AGG_ISO_QTR'/>
<aggregation value='AGG_ISO_WEEK'/>
<aggregation value='AGG_ISO_WEEKDAY'/>
<aggregation value='TRUNC_YEAR'/>
<aggregation value='TRUNC_QTR'/>
<aggregation value='TRUNC_MONTH'/>
<aggregation value='TRUNC_DAY'/>
<aggregation value='TRUNC_WEEK'/>
<aggregation value='TRUNC_HOUR'/>
<aggregation value='TRUNC_MINUTE'/>
<aggregation value='TRUNC_SECOND'/>
<!--TODO:IMPLEMENT
<aggregation value='TRUNC_ISO_YEAR'/>
<aggregation value='TRUNC_ISO_QTR'/>
<aggregation value='TRUNC_ISO_WEEK'/>
<aggregation value='TRUNC_ISO_WEEKDAY'/-->
</supported-aggregations>
<sql-format>
<!-- TODO:IMPLEMENT -->
<date-literal-escape value='Standard' />
<date-parts>
<date-part-group>
<!-- Default: used by DATEPART and DATEDIFF -->
<part name='year' value='YEAR' />
<part name='quarter' value='QUARTER' />
<part name='month' value='MONTH' />
<part name='week' value='WEEK' />
<part name='weekday' value='DOW' />
<part name='dayofyear' value='DOY' />
<part name='day' value='DAY' />
<part name='hour' value='HOUR' />
<part name='minute' value='MINUTE' />
<part name='second' value='SECOND' />
</date-part-group>
<date-part-group>
<date-function name='DATENAME' />
<part name='year' value='YYYY' />
<part name='quarter' value='Q' />
<part name='month' value='MMMM' />
<part name='dayofyear' value='DDD' />
<part name='day' value='DD' />
<part name='weekday' value='EEEE' />
<part name='week' value='' />
<part name='hour' value='hh' />
<part name='minute' value='mm' />
<part name='second' value='ss' />
</date-part-group>
<date-part-group>
<date-function name='DATEADD' />
<part name='year' value='YEAR' />
<part name='quarter' value='QUARTER' />
<part name='month' value='MONTH' />
<part name='week' value='WEEK' />
<part name='weekday' value='DAY' />
<part name='dayofyear' value='DAY' />
<part name='day' value='DAY' />
<part name='hour' value='HOUR' />
<part name='minute' value='MINUTE' />
<part name='second' value='SECOND' />
</date-part-group>
<date-part-group>
<date-function name='DATETRUNC' />
<part name='year' value='YEAR' />
<part name='quarter' value='QUARTER' />
<part name='month' value='MONTH' />
<part name='week' value='WEEK' />
<part name='weekday' value='DAY' />
<part name='dayofyear' value='DAY' />
<part name='day' value='DAY' />
<part name='hour' value='HOUR' />
<part name='minute' value='MINUTE' />
<part name='second' value='SECOND' />
</date-part-group>
</date-parts>
<format-column-definition>
<local-type name='int'>
<remote-type name='I1' value='TINYINT' />
<remote-type name='I2' value='SMALLINT' />
<remote-type name='I4' value='INT' />
<remote-type name='default' value='BIGINT' />
</local-type>
<local-type name='real'>
<remote-type name='R4' value='FLOAT' />
<remote-type name='default' value='DOUBLE' />
</local-type>
<local-type name='str'>
<remote-type name='default' value='STRING' />
</local-type>
<local-type name='datetime'>
<remote-type name='default' value='DATETIME' />
</local-type>
<local-type name='date'>
<remote-type name='default' value='DATE' />
</local-type>
<local-type name='bool'>
<remote-type name='default' value='BOOLEAN' />
</local-type>
</format-column-definition>
<format-create-table>
<formula>CREATE DATASET %n (%f)</formula>
</format-create-table>
<format-date-literal formula="DATE('%1')" format='yyyy-MM-dd' />
<format-datetime-literal formula="DATETIME('%1')" format="yyyy-MM-dd'T'HH:mm:ss" />
<format-drop-table>
<formula>DROP DATASET %1</formula>
</format-drop-table>
<format-false literal='FALSE' predicate='FALSE' />
<format-if-then-else value='Case' />
<format-index value='ColumnNameOnly' />
<format-insert value='Individual' />
<format-is-distinct value='Keyword' />
<format-order-by value='Nulls' />
<format-select>
<part name='Select' value='SELECT %1' />
<part name='From' value='FROM %1' />
<part name='Where' value='WHERE %1' />
<part name='Group' value='GROUP BY %1' />
<part name='Having' value='HAVING %1' />
<part name='OrderBy' value='ORDER BY %1' />
<part name='Top' value='LIMIT %1' />
</format-select>
<format-simple-case value='Case' />
<!--format-stored-proc-call--> <!-- Not supported -->
<format-string-literal value='Extended' />
<format-true literal='TRUE' predicate='TRUE' />
<icu-date-token-map>
<!-- used by DATEPARSE -->
<!-- http://userguide.icu-project.org/formatparse/datetime -->
<token key="G" value="" /> <!-- era designator (AD) -->
<token key="y" value="YYYY" /> <!-- year (1996) -->
<token key="yy" value="YY" /> <!-- year (96) -->
<token key="yyyy" value="YYYY" /> <!-- year (1996) -->
<token key="Y" value="" /> <!-- year of "Week of Year" (1997) -->
<token key="YY" value="" /> <!-- year of "Week of Year" (97) -->
<token key="YYYY" value="" /> <!-- year of "Week of Year" (1997) -->
<token key="u" value="" /> <!-- extended year (4601) -->
<token key="U" value="" /> <!-- cyclic year name,as in Chinese lunar calendar -->
<token key="Q" value="Q" /> <!-- quarter (2) -->
<token key="QQ" value="QQ" /> <!-- quarter (02) -->
<token key="QQQ" value="" /> <!-- quarter (Q2) -->
<token key="QQQQ" value="" /> <!-- quarter (2nd quarter) -->
<token key="q" value="Q" /> <!-- Stand Alone quarter (2) -->
<token key="qq" value="" /> <!-- Stand Alone quarter (02) -->
<token key="qqq" value="" /> <!-- Stand Alone quarter (Q2) -->
<token key="qqqq" value="" /> <!-- Stand Alone quarter (2nd quarter) -->
<token key="M" value="M" /> <!-- month in year (9) -->
<token key="MM" value="MM" /> <!-- month in year (09) -->
<token key="MMM" value="MMM" /> <!-- month in year (Sep) -->
<token key="MMMM" value="MMMM" /> <!-- month in year (September) -->
<token key="MMMMM" value="" /> <!-- month in year (S) -->
<token key="L" value="M" /> <!-- Stand Alone month in year (9) -->
<token key="LL" value="MM" /> <!-- Stand Alone month in year (09) -->
<token key="LLL" value="MMM" /> <!-- Stand Alone month in year (Sep) -->
<token key="LLLL" value="MMMMM" /> <!-- Stand Alone month in year (September) -->
<token key="LLLLL" value="" /> <!-- Stand Alone month in year (S) -->
<token key="w" value="" /> <!-- week of year (27) -->
<token key="ww" value="" /> <!-- week of year (27) -->
<token key="W" value="" /> <!-- week of month (2) -->
<token key="d" value="D" /> <!-- day in month (2) -->
<token key="dd" value="DD" /> <!-- day in month (02) -->
<token key="D" value="DDD" /> <!-- day of year (189) -->
<token key="F" value="" /> <!-- day of week in month (2 (2nd Wed in July)) -->
<token key="g" value="" /> <!-- modified julian day (2451334) -->
<token key="E" value="EEE" /> <!-- day of week (Tue) -->
<token key="EE" value="EEE" /> <!-- day of week (Tue) -->
<token key="EEE" value="EEE" /> <!-- day of week (Tue) -->
<token key="EEEE" value="EEEEy" /> <!-- day of week (Tuesday) -->
<token key="EEEEE" value="" /> <!-- day of week (T) -->
<token key="e" value="" /> <!-- local day of week (2) -->
<token key="ee" value="" /> <!-- local day of week (2) -->
<token key="eee" value="EEE" /> <!-- local day of week (Tue) -->
<token key="eeee" value="EEEE" /> <!-- local day of week (Tuesday) -->
<token key="eeeee" value="" /> <!-- local day of week (T) -->
<token key="c" value="" /> <!-- Stand Alone local day of week (2) -->
<token key="cc" value="" /> <!-- Stand Alone local day of week (2) -->
<token key="ccc" value="EEE" /> <!-- Stand Alone local day of week (Tue) -->
<token key="cccc" value="EEEE" /> <!-- Stand Alone local day of week (Tuesday) -->
<token key="ccccc" value="" /> <!-- Stand Alone local day of week (T) -->
<token key="a" value="a" /> <!-- am/pm marker (pm) -->
<token key="h" value="H" /> <!-- hour in am/pm 1:12 (7) -->
<token key="hh" value="HH" /> <!-- hour in am/pm 1:12 (07) -->
<token key="H" value="H" /> <!-- hour in day 0:23 (0) -->
<token key="HH" value="HH" /> <!-- hour in day 0:23 (00) -->
<token key="k" value="" /> <!-- hour in day 1:24 (24) -->
<token key="kk" value="" /> <!-- hour in day 1:24 (24) -->
<token key="K" value="" /> <!-- hour in am/pm 0:11 (0) -->
<token key="KK" value="" /> <!-- hour in am/pm 0:11 (00) -->
<token key="m" value="m" /> <!-- minute in hour (4) -->
<token key="mm" value="mm" /> <!-- minute in hour (04) -->
<token key="s" value="s" /> <!-- second in minute (5) -->
<token key="ss" value="ss" /> <!-- second in minute (05) -->
<token key="S" value="" /> <!-- millisecond (2) -->
<token key="SS" value="" /> <!-- millisecond (23) -->
<token key="SSS" value="SSS" /> <!-- millisecond (235) -->
<token key="SSSS" value="" /> <!-- millisecond (2350) -->
<token key="A" value="" /> <!-- millisecond in day (61201235) -->
<token key="z" value="z" /> <!-- Time Zone: specific non-location (PDT) -->
<token key="zz" value="z" /> <!-- Time Zone: specific non-location (PDT) -->
<token key="zzz" value="z" /> <!-- Time Zone: specific non-location (PDT) -->
<token key="zzzz" value="" /> <!-- Time Zone: specific non-location (Pacific Daylight Time) -->
<token key="Z" value="z" /> <!-- Time Zone: RFC 822 (-0800) -->
<token key="ZZ" value="z" /> <!-- Time Zone: RFC 822 (-0800) -->
<token key="ZZZ" value="z" /> <!-- Time Zone: RFC 822 (-0800) -->
<token key="ZZZZ" value="z" /> <!-- Time Zone: localized GMT (GMT-08:00) -->
<token key="ZZZZZ" value="z" /> <!-- Time Zone: ISO8601 (-08:00) -->
<token key="v" value="z" /> <!-- Time Zone: generic non-location (PT) -->
<token key="vvvv" value="z" /> <!-- Time Zone: generic non-location (Pacific Time or United States (Los Angeles)) -->
<token key="V" value="z" /> <!-- Time Zone: specific non-location,identical to z (PDT) -->
<token key="VVVV" value="z" /> <!-- Time Zone: generic location (United States (Los Angeles)) -->
</icu-date-token-map>
<id-max-length value='251' />
<id-quotes value="`"/>
<start-of-week-offset value='1' /> <!-- 1=Sun,2=Mon,... (as returned by DATEPART translation above) -->
<supported-joins>
<part name="Inner"/>
<part name="Left"/>
<part name="Right"/>
<part name="Cross"/>
</supported-joins>
</sql-format>
</dialect>