@hdnax/sqlingo.js 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +8 -14
- package/README.npm.md +8 -14
- package/README.repo.md +1 -2
- package/dist/chunk-2YNOERAO.cjs +2 -0
- package/dist/chunk-2YNOERAO.cjs.map +1 -0
- package/dist/chunk-2Z3O2CFM.cjs +19 -0
- package/dist/chunk-2Z3O2CFM.cjs.map +1 -0
- package/dist/chunk-4ZMKB6PV.cjs +2 -0
- package/dist/chunk-4ZMKB6PV.cjs.map +1 -0
- package/dist/chunk-53OWF4GG.js +2 -0
- package/dist/chunk-53OWF4GG.js.map +1 -0
- package/dist/chunk-C4CLTVOW.cjs +2 -0
- package/dist/chunk-C4CLTVOW.cjs.map +1 -0
- package/dist/chunk-DOKMTZYO.cjs +4 -0
- package/dist/chunk-DOKMTZYO.cjs.map +1 -0
- package/dist/chunk-FCGUTI7Y.js +2 -0
- package/dist/chunk-FCGUTI7Y.js.map +1 -0
- package/dist/chunk-IPCIXWCY.js +2 -0
- package/dist/chunk-IPCIXWCY.js.map +1 -0
- package/dist/chunk-KCNOE4DZ.js +19 -0
- package/dist/chunk-KCNOE4DZ.js.map +1 -0
- package/dist/chunk-NRJHX2GZ.js +2 -0
- package/dist/chunk-NRJHX2GZ.js.map +1 -0
- package/dist/chunk-O2J5RKBN.js +2 -0
- package/dist/chunk-O2J5RKBN.js.map +1 -0
- package/dist/chunk-PXUASP5I.js +2 -0
- package/dist/chunk-PXUASP5I.js.map +1 -0
- package/dist/chunk-R7C3ZHVK.cjs +2 -0
- package/dist/chunk-R7C3ZHVK.cjs.map +1 -0
- package/dist/chunk-UHWHUDLE.cjs +2 -0
- package/dist/chunk-UHWHUDLE.cjs.map +1 -0
- package/dist/chunk-WRNYJ54A.cjs +2 -0
- package/dist/chunk-WRNYJ54A.cjs.map +1 -0
- package/dist/chunk-XZQFOICX.cjs +3 -0
- package/dist/chunk-XZQFOICX.cjs.map +1 -0
- package/dist/chunk-YLOQRUXC.js +2 -0
- package/dist/chunk-YLOQRUXC.js.map +1 -0
- package/dist/chunk-YSS2WVCM.cjs +2 -0
- package/dist/chunk-YSS2WVCM.cjs.map +1 -0
- package/dist/chunk-Z5V6VOIN.js +3 -0
- package/dist/chunk-Z5V6VOIN.js.map +1 -0
- package/dist/chunk-ZBFGQPJR.js +4 -0
- package/dist/chunk-ZBFGQPJR.js.map +1 -0
- package/dist/dialects/athena.cjs +2 -0
- package/dist/dialects/athena.cjs.map +1 -0
- package/dist/dialects/athena.d.cts +66 -0
- package/dist/dialects/athena.d.ts +66 -0
- package/dist/dialects/athena.js +2 -0
- package/dist/dialects/athena.js.map +1 -0
- package/dist/dialects/bigquery.cjs +3 -0
- package/dist/dialects/bigquery.cjs.map +1 -0
- package/dist/dialects/bigquery.d.cts +651 -0
- package/dist/dialects/bigquery.d.ts +651 -0
- package/dist/dialects/bigquery.js +3 -0
- package/dist/dialects/bigquery.js.map +1 -0
- package/dist/dialects/clickhouse.cjs +2 -0
- package/dist/dialects/clickhouse.cjs.map +1 -0
- package/dist/dialects/clickhouse.d.cts +634 -0
- package/dist/dialects/clickhouse.d.ts +634 -0
- package/dist/dialects/clickhouse.js +2 -0
- package/dist/dialects/clickhouse.js.map +1 -0
- package/dist/dialects/databricks.cjs +2 -0
- package/dist/dialects/databricks.cjs.map +1 -0
- package/dist/dialects/databricks.d.cts +484 -0
- package/dist/dialects/databricks.d.ts +484 -0
- package/dist/dialects/databricks.js +2 -0
- package/dist/dialects/databricks.js.map +1 -0
- package/dist/dialects/doris.cjs +2 -0
- package/dist/dialects/doris.cjs.map +1 -0
- package/dist/dialects/doris.d.cts +484 -0
- package/dist/dialects/doris.d.ts +484 -0
- package/dist/dialects/doris.js +2 -0
- package/dist/dialects/doris.js.map +1 -0
- package/dist/dialects/dremio.cjs +2 -0
- package/dist/dialects/dremio.cjs.map +1 -0
- package/dist/dialects/dremio.d.cts +522 -0
- package/dist/dialects/dremio.d.ts +522 -0
- package/dist/dialects/dremio.js +2 -0
- package/dist/dialects/dremio.js.map +1 -0
- package/dist/dialects/drill.cjs +2 -0
- package/dist/dialects/drill.cjs.map +1 -0
- package/dist/dialects/drill.d.cts +512 -0
- package/dist/dialects/drill.d.ts +512 -0
- package/dist/dialects/drill.js +2 -0
- package/dist/dialects/drill.js.map +1 -0
- package/dist/dialects/druid.cjs +2 -0
- package/dist/dialects/druid.cjs.map +1 -0
- package/dist/dialects/druid.d.cts +17 -0
- package/dist/dialects/druid.d.ts +17 -0
- package/dist/dialects/druid.js +2 -0
- package/dist/dialects/druid.js.map +1 -0
- package/dist/dialects/duckdb.cjs +86 -0
- package/dist/dialects/duckdb.cjs.map +1 -0
- package/dist/dialects/duckdb.d.cts +756 -0
- package/dist/dialects/duckdb.d.ts +756 -0
- package/dist/dialects/duckdb.js +86 -0
- package/dist/dialects/duckdb.js.map +1 -0
- package/dist/dialects/dune.cjs +2 -0
- package/dist/dialects/dune.cjs.map +1 -0
- package/dist/dialects/dune.d.cts +21 -0
- package/dist/dialects/dune.d.ts +21 -0
- package/dist/dialects/dune.js +2 -0
- package/dist/dialects/dune.js.map +1 -0
- package/dist/dialects/exasol.cjs +2 -0
- package/dist/dialects/exasol.cjs.map +1 -0
- package/dist/dialects/exasol.d.cts +507 -0
- package/dist/dialects/exasol.d.ts +507 -0
- package/dist/dialects/exasol.js +2 -0
- package/dist/dialects/exasol.js.map +1 -0
- package/dist/dialects/fabric.cjs +2 -0
- package/dist/dialects/fabric.cjs.map +1 -0
- package/dist/dialects/fabric.d.cts +463 -0
- package/dist/dialects/fabric.d.ts +463 -0
- package/dist/dialects/fabric.js +2 -0
- package/dist/dialects/fabric.js.map +1 -0
- package/dist/dialects/hive.cjs +2 -0
- package/dist/dialects/hive.cjs.map +1 -0
- package/dist/dialects/hive.d.cts +585 -0
- package/dist/dialects/hive.d.ts +585 -0
- package/dist/dialects/hive.js +2 -0
- package/dist/dialects/hive.js.map +1 -0
- package/dist/dialects/materialize.cjs +2 -0
- package/dist/dialects/materialize.cjs.map +1 -0
- package/dist/dialects/materialize.d.cts +890 -0
- package/dist/dialects/materialize.d.ts +890 -0
- package/dist/dialects/materialize.js +2 -0
- package/dist/dialects/materialize.js.map +1 -0
- package/dist/dialects/mysql.cjs +2 -0
- package/dist/dialects/mysql.cjs.map +1 -0
- package/dist/dialects/mysql.d.cts +292 -0
- package/dist/dialects/mysql.d.ts +292 -0
- package/dist/dialects/mysql.js +2 -0
- package/dist/dialects/mysql.js.map +1 -0
- package/dist/dialects/oracle.cjs +2 -0
- package/dist/dialects/oracle.cjs.map +1 -0
- package/dist/dialects/oracle.d.cts +539 -0
- package/dist/dialects/oracle.d.ts +539 -0
- package/dist/dialects/oracle.js +2 -0
- package/dist/dialects/oracle.js.map +1 -0
- package/dist/dialects/postgres.cjs +2 -0
- package/dist/dialects/postgres.cjs.map +1 -0
- package/dist/dialects/postgres.d.cts +587 -0
- package/dist/dialects/postgres.d.ts +587 -0
- package/dist/dialects/postgres.js +2 -0
- package/dist/dialects/postgres.js.map +1 -0
- package/dist/dialects/presto.cjs +2 -0
- package/dist/dialects/presto.cjs.map +1 -0
- package/dist/dialects/presto.d.cts +173 -0
- package/dist/dialects/presto.d.ts +173 -0
- package/dist/dialects/presto.js +2 -0
- package/dist/dialects/presto.js.map +1 -0
- package/dist/dialects/prql.cjs +2 -0
- package/dist/dialects/prql.cjs.map +1 -0
- package/dist/dialects/prql.d.cts +496 -0
- package/dist/dialects/prql.d.ts +496 -0
- package/dist/dialects/prql.js +2 -0
- package/dist/dialects/prql.js.map +1 -0
- package/dist/dialects/redshift.cjs +2 -0
- package/dist/dialects/redshift.cjs.map +1 -0
- package/dist/dialects/redshift.d.cts +132 -0
- package/dist/dialects/redshift.d.ts +132 -0
- package/dist/dialects/redshift.js +2 -0
- package/dist/dialects/redshift.js.map +1 -0
- package/dist/dialects/risingwave.cjs +2 -0
- package/dist/dialects/risingwave.cjs.map +1 -0
- package/dist/dialects/risingwave.d.cts +478 -0
- package/dist/dialects/risingwave.d.ts +478 -0
- package/dist/dialects/risingwave.js +2 -0
- package/dist/dialects/risingwave.js.map +1 -0
- package/dist/dialects/singlestore.cjs +2 -0
- package/dist/dialects/singlestore.cjs.map +1 -0
- package/dist/dialects/singlestore.d.cts +73 -0
- package/dist/dialects/singlestore.d.ts +73 -0
- package/dist/dialects/singlestore.js +2 -0
- package/dist/dialects/singlestore.js.map +1 -0
- package/dist/dialects/snowflake.cjs +3 -0
- package/dist/dialects/snowflake.cjs.map +1 -0
- package/dist/dialects/snowflake.d.cts +320 -0
- package/dist/dialects/snowflake.d.ts +320 -0
- package/dist/dialects/snowflake.js +3 -0
- package/dist/dialects/snowflake.js.map +1 -0
- package/dist/dialects/solr.cjs +2 -0
- package/dist/dialects/solr.cjs.map +1 -0
- package/dist/dialects/solr.d.cts +458 -0
- package/dist/dialects/solr.d.ts +458 -0
- package/dist/dialects/solr.js +2 -0
- package/dist/dialects/solr.js.map +1 -0
- package/dist/dialects/spark.cjs +2 -0
- package/dist/dialects/spark.cjs.map +1 -0
- package/dist/dialects/spark.d.cts +484 -0
- package/dist/dialects/spark.d.ts +484 -0
- package/dist/dialects/spark.js +2 -0
- package/dist/dialects/spark.js.map +1 -0
- package/dist/dialects/spark2.cjs +2 -0
- package/dist/dialects/spark2.cjs.map +1 -0
- package/dist/dialects/spark2.d.cts +486 -0
- package/dist/dialects/spark2.d.ts +486 -0
- package/dist/dialects/spark2.js +2 -0
- package/dist/dialects/spark2.js.map +1 -0
- package/dist/dialects/sqlite.cjs +2 -0
- package/dist/dialects/sqlite.cjs.map +1 -0
- package/dist/dialects/sqlite.d.cts +510 -0
- package/dist/dialects/sqlite.d.ts +510 -0
- package/dist/dialects/sqlite.js +2 -0
- package/dist/dialects/sqlite.js.map +1 -0
- package/dist/dialects/starrocks.cjs +2 -0
- package/dist/dialects/starrocks.cjs.map +1 -0
- package/dist/dialects/starrocks.d.cts +518 -0
- package/dist/dialects/starrocks.d.ts +518 -0
- package/dist/dialects/starrocks.js +2 -0
- package/dist/dialects/starrocks.js.map +1 -0
- package/dist/dialects/tableau.cjs +2 -0
- package/dist/dialects/tableau.cjs.map +1 -0
- package/dist/dialects/tableau.d.cts +466 -0
- package/dist/dialects/tableau.d.ts +466 -0
- package/dist/dialects/tableau.js +2 -0
- package/dist/dialects/tableau.js.map +1 -0
- package/dist/dialects/teradata.cjs +2 -0
- package/dist/dialects/teradata.cjs.map +1 -0
- package/dist/dialects/teradata.d.cts +539 -0
- package/dist/dialects/teradata.d.ts +539 -0
- package/dist/dialects/teradata.js +2 -0
- package/dist/dialects/teradata.js.map +1 -0
- package/dist/dialects/trino.cjs +2 -0
- package/dist/dialects/trino.cjs.map +1 -0
- package/dist/dialects/trino.d.cts +465 -0
- package/dist/dialects/trino.d.ts +465 -0
- package/dist/dialects/trino.js +2 -0
- package/dist/dialects/trino.js.map +1 -0
- package/dist/dialects/tsql.cjs +2 -0
- package/dist/dialects/tsql.cjs.map +1 -0
- package/dist/dialects/tsql.d.cts +703 -0
- package/dist/dialects/tsql.d.ts +703 -0
- package/dist/dialects/tsql.js +2 -0
- package/dist/dialects/tsql.js.map +1 -0
- package/dist/index.cjs +5 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -14178
- package/dist/index.d.ts +3 -14178
- package/dist/index.js +5 -25
- package/dist/index.js.map +1 -1
- package/dist/tokens-VcMD09XM.d.cts +15805 -0
- package/dist/tokens-VcMD09XM.d.ts +15805 -0
- package/package.json +171 -5
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk2Z3O2CFMcjs = require('../chunk-2Z3O2CFM.cjs');function es(a){let A=a.args.position;return A&&["LEADING","TRAILING"].includes(A.toString().toUpperCase())?this.trimSql(a):_chunk2Z3O2CFMcjs.bq.call(this,a)}function mt(a){return a.length===1?new (0, _chunk2Z3O2CFMcjs.Kf)({this:"TO_TIMESTAMP",expressions:a}):_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.xl,{dialect:"oracle"})(a)}var Dt,Mt,gt,Ut,P,h= exports.OracleTokenizer =class extends(Ut=_chunk2Z3O2CFMcjs.Xq,gt=[_chunk2Z3O2CFMcjs.r],Mt=[_chunk2Z3O2CFMcjs.r],Dt=[_chunk2Z3O2CFMcjs.r],Ut){static get VAR_SINGLE_TOKENS(){return new Set(["@","$","#"])}static get UNICODE_STRINGS(){let t=_chunk2Z3O2CFMcjs.Xq.QUOTES,s=[];for(let e of t)for(let T of["U","u"])s.push([T+e,e]);return s}static get ORIGINAL_KEYWORDS(){return{..._chunk2Z3O2CFMcjs.Xq.KEYWORDS,"(+)":"joinMarker",BINARY_DOUBLE:"double",BINARY_FLOAT:"float","BULK COLLECT INTO":"bulkCollectInto",COLUMNS:"column",MATCH_RECOGNIZE:"matchRecognize",MINUS:"except",NVARCHAR2:"nvarchar","ORDER SIBLINGS BY":"orderSiblingsBy",SAMPLE:"tableSample",START:"begin",TOP:"top",VARCHAR2:"varchar",SYSTIMESTAMP:"systimestamp"}}};P=_chunk2Z3O2CFMcjs.a.call(void 0, Ut),_chunk2Z3O2CFMcjs.d.call(void 0, P,10,"VAR_SINGLE_TOKENS",gt,h),_chunk2Z3O2CFMcjs.d.call(void 0, P,10,"UNICODE_STRINGS",Mt,h),_chunk2Z3O2CFMcjs.d.call(void 0, P,10,"ORIGINAL_KEYWORDS",Dt,h),_chunk2Z3O2CFMcjs.b.call(void 0, P,h),_chunk2Z3O2CFMcjs.c.call(void 0, P,3,h),h.NESTED_COMMENTS=!1;var Bt,Yt,bt,yt,qt,Ht,Ft,Vt,Gt,wt,Kt,Wt,Jt,p,o=class o extends(Jt=_chunk2Z3O2CFMcjs.za,Wt=[_chunk2Z3O2CFMcjs.r],Kt=[_chunk2Z3O2CFMcjs.r],wt=[_chunk2Z3O2CFMcjs.r],Gt=[_chunk2Z3O2CFMcjs.r],Vt=[_chunk2Z3O2CFMcjs.r],Ft=[_chunk2Z3O2CFMcjs.r],Ht=[_chunk2Z3O2CFMcjs.r],qt=[_chunk2Z3O2CFMcjs.r],yt=[_chunk2Z3O2CFMcjs.r],bt=[_chunk2Z3O2CFMcjs.r],Yt=[_chunk2Z3O2CFMcjs.r],Bt=[_chunk2Z3O2CFMcjs.r],Jt){static get ID_VAR_TOKENS(){return new Set([..._chunk2Z3O2CFMcjs.za.ID_VAR_TOKENS,"sessionUser","currentCatalog","straightJoin"])}static get NO_PAREN_FUNCTIONS(){let t={systimestamp:_chunk2Z3O2CFMcjs.eh,..._chunk2Z3O2CFMcjs.za.NO_PAREN_FUNCTIONS};return delete t.localtime,t}static get WINDOW_BEFORE_PAREN_TOKENS(){return new Set(["over","keep"])}static get FUNCTIONS(){return{..._chunk2Z3O2CFMcjs.za.FUNCTIONS,CONVERT:t=>_chunk2Z3O2CFMcjs._f.fromArgList(t),L2_DISTANCE:t=>_chunk2Z3O2CFMcjs.qf.fromArgList(t),NVL:t=>_chunk2Z3O2CFMcjs.xa.call(void 0, t,{isNvl:!0}),SQUARE:t=>new (0, _chunk2Z3O2CFMcjs.zk)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),expression:_chunk2Z3O2CFMcjs.Ao.call(void 0, 2)}),TO_CHAR:_chunk2Z3O2CFMcjs.Rq,TO_TIMESTAMP:mt,TO_DATE:_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.wl,{dialect:"oracle"}),TRUNC:(t,{dialect:s})=>_chunk2Z3O2CFMcjs.kq.call(void 0, t,{dialect:s,dateTruncUnabbreviate:!1,defaultDateTruncUnit:"DD"})}}static get NO_PAREN_FUNCTION_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.NO_PAREN_FUNCTION_PARSERS,NEXT:function(){return this.parseNextValueFor()},PRIOR:function(){return this.expression(_chunk2Z3O2CFMcjs.jb,{this:this.parseBitwise()})},SYSDATE:function(){return this.expression(_chunk2Z3O2CFMcjs.fh,{sysdate:!0})},DBMS_RANDOM:function(){return this.parseDbmsRandom()}}}static get FUNCTION_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.FUNCTION_PARSERS,CONVERT:function(){let t=this.parseCsv(()=>this.parseBitwise());return _chunk2Z3O2CFMcjs._f.fromArgList(t)},JSON_ARRAY:function(){return this.parseJsonArray(_chunk2Z3O2CFMcjs.lj,{expressions:this.parseCsv(()=>this.parseFormatJson(this.parseBitwise()))})},JSON_ARRAYAGG:function(){return this.parseJsonArray(_chunk2Z3O2CFMcjs.pn,{this:this.parseFormatJson(this.parseBitwise()),order:this.parseOrder()})},JSON_EXISTS:function(){return this.parseJsonExists()}}}static get PROPERTY_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.PROPERTY_PARSERS,GLOBAL:function(){return(this.matchTextSeq("TEMPORARY")||void 0)&&this.expression(_chunk2Z3O2CFMcjs.Kd,{this:"GLOBAL"})},PRIVATE:function(){return(this.matchTextSeq("TEMPORARY")||void 0)&&this.expression(_chunk2Z3O2CFMcjs.Kd,{this:"PRIVATE"})},FORCE:function(){return this.expression(_chunk2Z3O2CFMcjs.Sd,{})}}}static get QUERY_MODIFIER_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.QUERY_MODIFIER_PARSERS,orderSiblingsBy:function(){return["order",this.parseOrder()]},with:function(){return["options",this.parseQueryRestrictions()]}}}static get TYPE_LITERAL_PARSERS(){return{date:function(t){return this.expression(_chunk2Z3O2CFMcjs.ji,{this:t})},timestamp:function(t){return mt([_nullishCoalesce(t, () => (_chunk2Z3O2CFMcjs.Ao.call(void 0, ""))),_chunk2Z3O2CFMcjs.Ao.call(void 0, "%Y-%m-%d %H:%M:%S.%f")])}}}static get DISTINCT_TOKENS(){return new Set(["distinct","unique"])}static get QUERY_RESTRICTIONS(){return{WITH:[["READ","ONLY"],["CHECK","OPTION"]]}}parseDbmsRandom(){if(this.matchTextSeq([".","VALUE"])){let t,s;if(this.match("lParen",{advance:!1})){let e=this.parseWrappedCsv(()=>this.parseBitwise());e.length===2&&(t=e[0],s=e[1])}return new (0, _chunk2Z3O2CFMcjs.Ck)({lower:t,upper:s})}this.retreat(this.index-1)}parseJsonArray(t,s={}){return this.expression(t,{nullHandling:this.parseOnHandling("NULL",["NULL","ABSENT"]),returnType:this.matchTextSeq("RETURNING")&&this.parseType(),strict:this.matchTextSeq("STRICT"),...s})}parseQueryRestrictions(){let t=this.parseVarFromOptions(o.QUERY_RESTRICTIONS,{raiseUnmatched:!1});if(t)return this.expression(_chunk2Z3O2CFMcjs.Qb,{this:t,expression:this.match("constraint")&&this.parseField()})}parseJsonExists(){let t=this.parseFormatJson(this.parseBitwise());return this.match("comma"),this.expression(_chunk2Z3O2CFMcjs.mj,{this:t,path:this.dialect.toJsonPath(this.parseBitwise()),passing:(this.matchTextSeq("PASSING")||void 0)&&this.parseCsv(()=>this.parseAlias(this.parseBitwise())),onCondition:this.parseOnCondition()})}parseInto(){let t=this.match("bulkCollectInto");if(!t&&!this.match("into"))return;let s=this.index,e=this.parseExpressions();return e.length===1?(this.retreat(s),this.match("table"),this.expression(_chunk2Z3O2CFMcjs.ob,{this:this.parseTable({schema:!0}),bulkCollect:t})):this.expression(_chunk2Z3O2CFMcjs.ob,{bulkCollect:t,expressions:e})}parseHintFunctionCall(){if(!this.curr||!this.next||this.next.tokenType!=="lParen")return;let t=this.curr.text;this.advance(2);let s=this.parseHintArgs(),e=this.expression(_chunk2Z3O2CFMcjs.Kf,{this:t,expressions:s});return this.matchRParen(e),e}parseHintArgs(){let t=[],s=this.parseVar();for(;s;)t.push(s),s=this.parseVar();return t}parseConnectWithPrior(){return this.parseAssignment()}parseColumnOps(t){let s=super.parseColumnOps(t);if(!s)return s;let e=this.index,T=this.parseIntervalSpan(s);return T.args.unit instanceof _chunk2Z3O2CFMcjs.ee?T:(this.retreat(e),s)}parseInsertTable(){let t=this.parseTableParts({schema:!0});if(t instanceof _chunk2Z3O2CFMcjs.Tb){let s=this.parseIdVar({anyToken:!1});return s instanceof _chunk2Z3O2CFMcjs.rb&&t.setArgKey("alias",new (0, _chunk2Z3O2CFMcjs.Ya)({this:s})),t.setArgKey("partition",this.parsePartition()),this.parseSchema({this:t})}return t}static get TABLE_ALIAS_TOKENS(){return new Set([..._chunk2Z3O2CFMcjs.za.TABLE_ALIAS_TOKENS,"straightJoin"])}};p=_chunk2Z3O2CFMcjs.a.call(void 0, Jt),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"ID_VAR_TOKENS",Wt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"NO_PAREN_FUNCTIONS",Kt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"WINDOW_BEFORE_PAREN_TOKENS",wt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"FUNCTIONS",Gt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"NO_PAREN_FUNCTION_PARSERS",Vt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"FUNCTION_PARSERS",Ft,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"PROPERTY_PARSERS",Ht,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"QUERY_MODIFIER_PARSERS",qt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"TYPE_LITERAL_PARSERS",yt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"DISTINCT_TOKENS",bt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"QUERY_RESTRICTIONS",Yt,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"TABLE_ALIAS_TOKENS",Bt,o),_chunk2Z3O2CFMcjs.b.call(void 0, p,o),_chunk2Z3O2CFMcjs.c.call(void 0, p,3,o),o.VALUES_FOLLOWED_BY_PAREN=!1;var q=o,$t,vt,Qt,kt,Zt,R,i= exports.OracleGenerator =class extends(Zt=_chunk2Z3O2CFMcjs.lp,kt=[_chunk2Z3O2CFMcjs.r],Qt=[_chunk2Z3O2CFMcjs.r],vt=[_chunk2Z3O2CFMcjs.r],$t=[_chunk2Z3O2CFMcjs.r],Zt){static get AFTER_HAVING_MODIFIER_TRANSFORMS(){let t=new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);return["cluster","distribute","sort"].forEach(s=>t.delete(s)),t}static get TYPE_MAPPING(){let t=new Map(_chunk2Z3O2CFMcjs.lp.TYPE_MAPPING);return t.set("tinyint","SMALLINT"),t.set("smallint","SMALLINT"),t.set("int","INT"),t.set("bigint","INT"),t.set("decimal","NUMBER"),t.set("double","DOUBLE PRECISION"),t.set("varchar","VARCHAR2"),t.set("nvarchar","NVARCHAR2"),t.set("nchar","NCHAR"),t.set("text","CLOB"),t.set("timetz","TIME"),t.set("timestampntz","TIMESTAMP"),t.set("timestamptz","TIMESTAMP"),t.set("binary","BLOB"),t.set("varbinary","BLOB"),t.set("rowversion","BLOB"),t.delete("blob"),t}static get ORIGINAL_TRANSFORMS(){let t=new Map(_chunk2Z3O2CFMcjs.lp.TRANSFORMS);return t.set(_chunk2Z3O2CFMcjs.ji,function(s){return this.func("TO_DATE",[s.args.this,_chunk2Z3O2CFMcjs.Ao.call(void 0, "YYYY-MM-DD")])}),t.set(_chunk2Z3O2CFMcjs.yh,function(s){return this.func("TRUNC",[s.args.this,s.args.unit])}),t.set(_chunk2Z3O2CFMcjs.qf,_chunk2Z3O2CFMcjs.pp.call(void 0, "L2_DISTANCE")),t.set(_chunk2Z3O2CFMcjs.Ie,_chunk2Z3O2CFMcjs.vp),t.set(_chunk2Z3O2CFMcjs.qn,_chunk2Z3O2CFMcjs.pp.call(void 0, "MAX")),t.set(_chunk2Z3O2CFMcjs.rn,_chunk2Z3O2CFMcjs.pp.call(void 0, "MIN")),t.set(_chunk2Z3O2CFMcjs.Pe,_chunk2Z3O2CFMcjs.pp.call(void 0, "MOD")),t.set(_chunk2Z3O2CFMcjs.Ck,_chunk2Z3O2CFMcjs.pp.call(void 0, "DBMS_RANDOM.VALUE")),t.set(_chunk2Z3O2CFMcjs.Wd,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.So,_chunk2Z3O2CFMcjs.To])),t.set(_chunk2Z3O2CFMcjs.tl,function(s){return _chunk2Z3O2CFMcjs.Ep.call(this,s,{funcName:"INSTR",supportsPosition:!0,supportsOccurrence:!0})}),t.set(_chunk2Z3O2CFMcjs.xl,function(s){return this.func("TO_TIMESTAMP",[s.args.this,this.formatTime(s)])}),t.set(_chunk2Z3O2CFMcjs.wl,function(s){return this.func("TO_DATE",[s.args.this,this.formatTime(s)])}),t.set(_chunk2Z3O2CFMcjs.Xd,function(s){return this.subquerySql(s,{sep:" "})}),t.set(_chunk2Z3O2CFMcjs.pl,_chunk2Z3O2CFMcjs.pp.call(void 0, "SUBSTR")),t.set(_chunk2Z3O2CFMcjs.Tb,function(s){return this.tableSql(s,{sep:" "})}),t.set(_chunk2Z3O2CFMcjs.Wb,function(s){return this.tableSampleSql(s)}),t.set(_chunk2Z3O2CFMcjs.Kd,s=>`${s.args.this||"GLOBAL"} TEMPORARY`),t.set(_chunk2Z3O2CFMcjs.Hl,function(s){return this.func("TO_CHAR",[s.args.this,this.formatTime(s)])}),t.set(_chunk2Z3O2CFMcjs.Qf,function(s){return this.functionFallbackSql(s)}),t.set(_chunk2Z3O2CFMcjs.Sf,_chunk2Z3O2CFMcjs.Fq),t.set(_chunk2Z3O2CFMcjs.Ml,es),t.set(_chunk2Z3O2CFMcjs.Vl,function(s){return`ASCII(UNISTR(${this.sql(s.args.this)}))`}),t.set(_chunk2Z3O2CFMcjs.Zl,function(s){return`TO_DATE('1970-01-01', 'YYYY-MM-DD') + (${this.sql(s,"this")} / 86400)`}),t.set(_chunk2Z3O2CFMcjs.th,_chunk2Z3O2CFMcjs.pp.call(void 0, "UTC_TIMESTAMP")),t.set(_chunk2Z3O2CFMcjs.sh,_chunk2Z3O2CFMcjs.pp.call(void 0, "UTC_TIME")),t.set(_chunk2Z3O2CFMcjs.eh,()=>"SYSTIMESTAMP"),t}static get PROPERTIES_LOCATION(){let t=new Map(_chunk2Z3O2CFMcjs.lp.PROPERTIES_LOCATION);return t.set(_chunk2Z3O2CFMcjs.Od,"unsupported"),t}currentTimestampSql(t){if(t.args.sysdate)return"SYSDATE";let s=t.args.this;return s?this.func("CURRENT_TIMESTAMP",[s]):"CURRENT_TIMESTAMP"}offsetSql(t){return`${super.offsetSql(t)} ROWS`}addColumnSql(t){return`ADD ${this.sql(t)}`}queryOptionSql(t){let s=this.sql(t,"this"),e=this.sql(t,"expression");return e=e?` CONSTRAINT ${e}`:"",`${s}${e}`}coalesceSql(t){let s=t.args.isNvl?"NVL":"COALESCE";return _chunk2Z3O2CFMcjs.pp.call(void 0, s).call(this,t)}intoSql(t){let s=t.args.bulkCollect?"BULK COLLECT INTO":"INTO";return t.args.this?`${this.seg(s)} ${this.sql(t,"this")}`:`${this.seg(s)} ${this.expressions(t)}`}hintSql(t){let s=[];for(let e of t.args.expressions||[])if(e instanceof _chunk2Z3O2CFMcjs.Kf){let T=this.formatArgs(e.args.expressions||[],{sep:" "});s.push(`${this.sql(e,"this")}(${T})`)}else s.push(this.sql(e));return` /*+ ${this.expressions(void 0,{sqls:s,sep:this._constructor.QUERY_HINT_SEP}).trim()} */`}isAsciiSql(t){return`NVL(REGEXP_LIKE(${this.sql(t.args.this)}, '^[' || CHR(1) || '-' || CHR(127) || ']*$'), TRUE)`}intervalSql(t){return`${t.args.this instanceof _chunk2Z3O2CFMcjs.$c?"INTERVAL ":""}${this.sql(t,"this")} ${this.sql(t,"unit")}`}columnDefSql(t,s={}){let{sep:e=" "}=s,T=t.find(_chunk2Z3O2CFMcjs.Zc);return T&&(e=` ${this.sql(T)} `,_optionalChain([T, 'access', _2 => _2.parent, 'optionalAccess', _3 => _3.pop, 'call', _4 => _4()])),super.columnDefSql(t,{sep:e})}};R=_chunk2Z3O2CFMcjs.a.call(void 0, Zt),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"AFTER_HAVING_MODIFIER_TRANSFORMS",kt,i),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"TYPE_MAPPING",Qt,i),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"ORIGINAL_TRANSFORMS",vt,i),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"PROPERTIES_LOCATION",$t,i),_chunk2Z3O2CFMcjs.b.call(void 0, R,i),_chunk2Z3O2CFMcjs.c.call(void 0, R,3,i),i.SELECT_KINDS=[],i.TRY_SUPPORTED=!1,i.SUPPORTS_UESCAPE=!1,i.LOCKING_READS_SUPPORTED=!0,i.JOIN_HINTS=!1,i.TABLE_HINTS=!1,i.DATA_TYPE_SPECIFIERS_ALLOWED=!0,i.ALTER_TABLE_INCLUDE_COLUMN_KEYWORD=!1,i.LIMIT_FETCH="FETCH",i.TABLESAMPLE_KEYWORDS="SAMPLE",i.LAST_DAY_SUPPORTS_DATE_PART=!1,i.SUPPORTS_SELECT_INTO=!0,i.TZ_TO_WITH_TIME_ZONE=!0,i.SUPPORTS_WINDOW_EXCLUDE=!0,i.QUERY_HINT_SEP=" ",i.SUPPORTS_DECODE_CASE=!0;var Xt,jt,zt,ts,ss,c,E= exports.Oracle =class extends(ss=_chunk2Z3O2CFMcjs.op,ts=[_chunk2Z3O2CFMcjs.r],zt=[_chunk2Z3O2CFMcjs.r],jt=[_chunk2Z3O2CFMcjs.r],Xt=[_chunk2Z3O2CFMcjs.r],ss){static get NULL_ORDERING(){return"nulls_are_large"}static get NORMALIZATION_STRATEGY(){return"uppercase"}static get TIME_MAPPING(){return{D:"%u",DAY:"%A",DD:"%d",DDD:"%j",DY:"%a",HH:"%I",HH12:"%I",HH24:"%H",IW:"%V",MI:"%M",MM:"%m",MON:"%b",MONTH:"%B",SS:"%S",WW:"%W",YY:"%y",YYYY:"%Y",FF6:"%f"}}static get PSEUDOCOLUMNS(){return new Set(["ROWNUM","ROWID","OBJECT_ID","OBJECT_VALUE","LEVEL"])}canQuote(t,s={}){let{identify:e="safe"}=s;return(t.args.quoted||!(t.parent instanceof _chunk2Z3O2CFMcjs.Jc))&&super.canQuote(t,{identify:e})}};c=_chunk2Z3O2CFMcjs.a.call(void 0, ss),_chunk2Z3O2CFMcjs.d.call(void 0, c,10,"NULL_ORDERING",ts,E),_chunk2Z3O2CFMcjs.d.call(void 0, c,10,"NORMALIZATION_STRATEGY",zt,E),_chunk2Z3O2CFMcjs.d.call(void 0, c,10,"TIME_MAPPING",jt,E),_chunk2Z3O2CFMcjs.d.call(void 0, c,10,"PSEUDOCOLUMNS",Xt,E),_chunk2Z3O2CFMcjs.b.call(void 0, c,E),_chunk2Z3O2CFMcjs.c.call(void 0, c,3,E),E.DIALECT_NAME="oracle",E.ALIAS_POST_TABLESAMPLE=!0,E.LOCKING_READS_SUPPORTED=!0,E.TABLESAMPLE_SIZE_IS_PERCENT=!0,E.ON_CONDITION_EMPTY_BEFORE_ERROR=!1,E.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN=!1,E.DISABLES_ALIAS_REF_EXPANSION=!0,E.Tokenizer=h,E.Parser=q,E.Generator=i;_chunk2Z3O2CFMcjs.op.register("oracle",E);exports.Oracle = E; exports.OracleGenerator = i; exports.OracleParser = q; exports.OracleTokenizer = h;
|
|
2
|
+
//# sourceMappingURL=oracle.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/huydna/projects/sqlingo.js/dist/dialects/oracle.cjs","../../src/dialects/oracle.ts"],"names":["trimSqlEx","expression","position","trimSql","buildToTimestamp","args","AnonymousExpr","buildFormattedTime","StrToTimeExpr","_ORIGINAL_KEYWORDS_dec","_UNICODE_STRINGS_dec","_VAR_SINGLE_TOKENS_dec","_a","_init","OracleTokenizer","Tokenizer","cache","quotes","results","q","prefix","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","_TABLE_ALIAS_TOKENS_dec","_QUERY_RESTRICTIONS_dec","_DISTINCT_TOKENS_dec","_TYPE_LITERAL_PARSERS_dec","_QUERY_MODIFIER_PARSERS_dec","_PROPERTY_PARSERS_dec","_FUNCTION_PARSERS_dec","_NO_PAREN_FUNCTION_PARSERS_dec","_FUNCTIONS_dec","_WINDOW_BEFORE_PAREN_TOKENS_dec","_NO_PAREN_FUNCTIONS_dec","_ID_VAR_TOKENS_dec","_OracleParser","Parser","noParenFunctions","SystimestampExpr","ConvertToCharsetExpr","EuclideanDistanceExpr","buildCoalesce","PowExpr","seqGet","literal","buildTimeToStrOrToChar","StrToDateExpr","dialect","buildTrunc","PriorExpr","CurrentTimestampExpr","JsonArrayExpr","JsonArrayAggExpr","TemporaryPropertyExpr","ForcePropertyExpr","thisExpr","DateStrToDateExpr","lower","upper","lowerUpper","RandExpr","exprType","options","kind","QueryOptionExpr","JsonExistsExpr","bulkCollect","index","expressions","IntoExpr","thisText","expr","result","intervalSpan","IntervalSpanExpr","TableExpr","aliasName","IdentifierExpr","TableAliasExpr","OracleParser","_PROPERTIES_LOCATION_dec","_ORIGINAL_TRANSFORMS_dec","_TYPE_MAPPING_dec","_AFTER_HAVING_MODIFIER_TRANSFORMS_dec","OracleGenerator","Generator","modifiers","m","mapping","e","DateTruncExpr","renameFunc","ILikeExpr","noIlikeSql","LogicalOrExpr","LogicalAndExpr","ModExpr","SelectExpr","preprocess","eliminateDistinctOn","eliminateQualify","StrPositionExpr","strPositionSql","SubqueryExpr","SubstringExpr","TableSampleExpr"],"mappings":"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","file":"/home/huydna/projects/sqlingo.js/dist/dialects/oracle.cjs","sourcesContent":[null,"import {\n cache,\n} from '../port_internals';\nimport {\n Generator,\n} from '../generator';\nimport {\n Parser, buildCoalesce,\n} from '../parser';\nimport type {\n TokenPair,\n} from '../tokens';\nimport {\n Tokenizer, TokenType,\n} from '../tokens';\nimport type {\n Expression,\n ColumnDefExpr,\n IntervalExpr,\n CoalesceExpr,\n HintExpr,\n IsAsciiExpr,\n OffsetExpr,\n} from '../expressions';\nimport {\n IdentifierExpr,\n JsonExistsExpr,\n TimeToStrExpr,\n PropertiesLocation,\n VolatilePropertyExpr,\n PseudocolumnExpr,\n ConvertToCharsetExpr,\n EuclideanDistanceExpr,\n PowExpr,\n LiteralExpr,\n StrToTimeExpr,\n AnonymousExpr,\n StrToDateExpr,\n PriorExpr,\n CurrentTimestampExpr,\n SystimestampExpr,\n TemporaryPropertyExpr,\n ForcePropertyExpr,\n QueryOptionExpr,\n DateStrToDateExpr,\n RandExpr,\n IntoExpr,\n TableExpr,\n TableAliasExpr,\n DataTypeExprKind,\n DateTruncExpr,\n ILikeExpr,\n LogicalOrExpr,\n LogicalAndExpr,\n ModExpr,\n SelectExpr,\n StrPositionExpr,\n SubstringExpr,\n TableSampleExpr,\n ToCharExpr,\n ToNumberExpr,\n TrimExpr,\n UnicodeExpr,\n UnixToTimeExpr,\n UtcTimestampExpr,\n UtcTimeExpr,\n InOutColumnConstraintExpr,\n IntervalSpanExpr,\n SubqueryExpr,\n literal,\n JsonArrayAggExpr,\n JsonArrayExpr,\n} from '../expressions';\nimport {\n seqGet,\n} from '../helper';\nimport {\n eliminateDistinctOn, eliminateQualify, preprocess,\n} from '../transforms';\nimport {\n buildFormattedTime,\n buildTimeToStrOrToChar,\n buildTrunc,\n noIlikeSql,\n strPositionSql,\n toNumberWithNlsParam,\n trimSql,\n Dialect, NormalizationStrategy, Dialects,\n renameFunc,\n NullOrdering,\n} from './dialect';\n\nfunction trimSqlEx (this: Generator, expression: TrimExpr): string {\n const position = expression.args.position;\n\n if (position && [\n 'LEADING',\n 'TRAILING',\n ].includes(position.toString().toUpperCase())) {\n return this.trimSql(expression);\n }\n\n return trimSql.call(this, expression);\n}\n\nfunction buildToTimestamp (args: Expression[]): StrToTimeExpr | AnonymousExpr {\n if (args.length === 1) {\n return new AnonymousExpr({\n this: 'TO_TIMESTAMP',\n expressions: args,\n });\n }\n\n return buildFormattedTime(StrToTimeExpr, {\n dialect: Dialects.ORACLE,\n })(args);\n}\n\nexport class OracleTokenizer extends Tokenizer {\n @cache\n static get VAR_SINGLE_TOKENS () {\n return new Set([\n '@',\n '$',\n '#',\n ]);\n }\n\n @cache\n static get UNICODE_STRINGS (): TokenPair[] {\n const quotes = Tokenizer.QUOTES as string[];\n const results: [string, string][] = [\n ];\n for (const q of quotes) {\n for (const prefix of [\n 'U',\n 'u',\n ]) {\n results.push([\n prefix + q,\n q,\n ]);\n }\n }\n return results;\n }\n\n static NESTED_COMMENTS = false;\n\n @cache\n static get ORIGINAL_KEYWORDS (): Record<string, TokenType> {\n return {\n ...Tokenizer.KEYWORDS,\n '(+)': TokenType.JOIN_MARKER,\n 'BINARY_DOUBLE': TokenType.DOUBLE,\n 'BINARY_FLOAT': TokenType.FLOAT,\n 'BULK COLLECT INTO': TokenType.BULK_COLLECT_INTO,\n 'COLUMNS': TokenType.COLUMN,\n 'MATCH_RECOGNIZE': TokenType.MATCH_RECOGNIZE,\n 'MINUS': TokenType.EXCEPT,\n 'NVARCHAR2': TokenType.NVARCHAR,\n 'ORDER SIBLINGS BY': TokenType.ORDER_SIBLINGS_BY,\n 'SAMPLE': TokenType.TABLE_SAMPLE,\n 'START': TokenType.BEGIN,\n 'TOP': TokenType.TOP,\n 'VARCHAR2': TokenType.VARCHAR,\n 'SYSTIMESTAMP': TokenType.SYSTIMESTAMP,\n };\n }\n}\n\nexport class OracleParser extends Parser {\n @cache\n static get ID_VAR_TOKENS (): Set<TokenType> {\n return new Set([\n ...Parser.ID_VAR_TOKENS,\n TokenType.SESSION_USER,\n TokenType.CURRENT_CATALOG,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get NO_PAREN_FUNCTIONS () {\n const noParenFunctions = {\n [TokenType.SYSTIMESTAMP]: SystimestampExpr,\n ...Parser.NO_PAREN_FUNCTIONS,\n };\n delete noParenFunctions[TokenType.LOCALTIME];\n return noParenFunctions;\n }\n\n @cache\n static get WINDOW_BEFORE_PAREN_TOKENS () {\n return new Set([\n TokenType.OVER,\n TokenType.KEEP,\n ]);\n }\n\n static VALUES_FOLLOWED_BY_PAREN = false;\n\n @cache\n static get FUNCTIONS (): Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> {\n return {\n ...Parser.FUNCTIONS,\n CONVERT: (args: Expression[]) => ConvertToCharsetExpr.fromArgList(args),\n L2_DISTANCE: (args: Expression[]) => EuclideanDistanceExpr.fromArgList(args),\n NVL: (args: Expression[]) => buildCoalesce(args, {\n isNvl: true,\n }),\n SQUARE: (args: Expression[]) => new PowExpr({\n this: seqGet(args, 0),\n expression: literal(2),\n }),\n TO_CHAR: buildTimeToStrOrToChar,\n TO_TIMESTAMP: buildToTimestamp,\n TO_DATE: buildFormattedTime(StrToDateExpr, {\n dialect: Dialects.ORACLE,\n }),\n TRUNC: (args: Expression[], {\n dialect,\n }: {dialect: Dialect}) => buildTrunc(args, {\n dialect,\n dateTruncUnabbreviate: false,\n defaultDateTruncUnit: 'DD',\n }),\n };\n }\n\n @cache\n static get NO_PAREN_FUNCTION_PARSERS (): Record<string, (this: Parser) => Expression | undefined> {\n return {\n ...Parser.NO_PAREN_FUNCTION_PARSERS,\n NEXT: function (this: Parser) {\n return this.parseNextValueFor();\n },\n PRIOR: function (this: Parser) {\n return this.expression(PriorExpr, {\n this: this.parseBitwise(),\n });\n },\n SYSDATE: function (this: Parser) {\n return this.expression(CurrentTimestampExpr, {\n sysdate: true,\n });\n },\n DBMS_RANDOM: function (this: Parser) {\n return (this as OracleParser).parseDbmsRandom();\n },\n };\n }\n\n @cache\n static get FUNCTION_PARSERS (): Record<string, (this: Parser) => Expression | undefined> {\n return {\n ...Parser.FUNCTION_PARSERS,\n CONVERT: function (this: Parser) {\n // Oracle CONVERT(expr, dest_charset[, source_charset]) is different from SQL CONVERT\n // Parse as regular function arguments instead of using parseConvert\n const args = this.parseCsv(() => this.parseBitwise());\n return ConvertToCharsetExpr.fromArgList(args);\n },\n JSON_ARRAY: function (this: Parser) {\n return (this as OracleParser).parseJsonArray(\n JsonArrayExpr,\n {\n expressions: this.parseCsv(() => this.parseFormatJson(this.parseBitwise())),\n },\n );\n },\n JSON_ARRAYAGG: function (this: Parser) {\n return (this as OracleParser).parseJsonArray(\n JsonArrayAggExpr,\n {\n this: this.parseFormatJson(this.parseBitwise()),\n order: this.parseOrder(),\n },\n );\n },\n JSON_EXISTS: function (this: Parser) {\n return (this as OracleParser).parseJsonExists();\n },\n };\n }\n\n @cache\n static get PROPERTY_PARSERS (): Record<string, (this: Parser) => Expression | undefined> {\n return {\n ...Parser.PROPERTY_PARSERS,\n GLOBAL: function (this: Parser) {\n return (this.matchTextSeq('TEMPORARY') || undefined)\n && this.expression(TemporaryPropertyExpr, {\n this: 'GLOBAL',\n });\n },\n PRIVATE: function (this: Parser) {\n return (this.matchTextSeq('TEMPORARY') || undefined)\n && this.expression(TemporaryPropertyExpr, {\n this: 'PRIVATE',\n });\n },\n FORCE: function (this: Parser) {\n return this.expression(ForcePropertyExpr, {});\n },\n };\n }\n\n @cache\n static get QUERY_MODIFIER_PARSERS (): Partial<Record<TokenType, (this: Parser) => [string, Expression | Expression[] | undefined]>> {\n return {\n ...Parser.QUERY_MODIFIER_PARSERS,\n [TokenType.ORDER_SIBLINGS_BY]: function (this: Parser) {\n return [\n 'order',\n this.parseOrder(),\n ];\n },\n [TokenType.WITH]: function (this: Parser) {\n return [\n 'options',\n (this as OracleParser).parseQueryRestrictions(),\n ];\n },\n };\n }\n\n @cache\n static get TYPE_LITERAL_PARSERS (): Partial<Record<DataTypeExprKind, (this: Parser, thisArg?: Expression, _?: unknown) => Expression>> {\n return {\n [DataTypeExprKind.DATE]: function (this: Parser, thisExpr?: Expression) {\n return this.expression(DateStrToDateExpr, {\n this: thisExpr,\n });\n },\n [DataTypeExprKind.TIMESTAMP]: function (this: Parser, thisExpr?: Expression) {\n return buildToTimestamp(\n [\n thisExpr ?? literal(''),\n literal('%Y-%m-%d %H:%M:%S.%f'),\n ],\n );\n },\n };\n }\n\n @cache\n static get DISTINCT_TOKENS () {\n return new Set([\n TokenType.DISTINCT,\n TokenType.UNIQUE,\n ]);\n }\n\n @cache\n static get QUERY_RESTRICTIONS () {\n return {\n WITH: [\n [\n 'READ',\n 'ONLY',\n ],\n [\n 'CHECK',\n 'OPTION',\n ],\n ],\n };\n }\n\n public parseDbmsRandom (): Expression | undefined {\n if (this.matchTextSeq([\n '.',\n 'VALUE',\n ])) {\n let lower: Expression | undefined;\n let upper: Expression | undefined;\n if (this.match(TokenType.L_PAREN, {\n advance: false,\n })) {\n const lowerUpper = this.parseWrappedCsv(() => this.parseBitwise());\n if (lowerUpper.length === 2) {\n lower = lowerUpper[0];\n upper = lowerUpper[1];\n }\n }\n\n return new RandExpr({\n lower,\n upper,\n });\n }\n\n this.retreat(this.index - 1);\n return undefined;\n }\n\n public parseJsonArray (exprType: typeof Expression, options: Record<string, unknown> = {}): Expression {\n return this.expression(\n exprType,\n {\n nullHandling: this.parseOnHandling('NULL', [\n 'NULL',\n 'ABSENT',\n ]),\n returnType: this.matchTextSeq('RETURNING') && this.parseType(),\n strict: this.matchTextSeq('STRICT'),\n ...options,\n },\n );\n }\n\n public parseQueryRestrictions (): Expression | undefined {\n const kind = this.parseVarFromOptions(OracleParser.QUERY_RESTRICTIONS, {\n raiseUnmatched: false,\n });\n\n if (!kind) {\n return undefined;\n }\n\n return this.expression(\n QueryOptionExpr,\n {\n this: kind,\n expression: this.match(TokenType.CONSTRAINT) && this.parseField(),\n },\n );\n }\n\n public parseJsonExists (): JsonExistsExpr {\n const thisExpr = this.parseFormatJson(this.parseBitwise());\n this.match(TokenType.COMMA);\n return this.expression(\n JsonExistsExpr,\n {\n this: thisExpr,\n path: this.dialect.toJsonPath(this.parseBitwise()),\n passing: (this.matchTextSeq('PASSING') || undefined)\n && this.parseCsv(() => this.parseAlias(this.parseBitwise())),\n onCondition: this.parseOnCondition(),\n },\n );\n }\n\n public parseInto (): IntoExpr | undefined {\n const bulkCollect = this.match(TokenType.BULK_COLLECT_INTO);\n if (!bulkCollect && !this.match(TokenType.INTO)) {\n return undefined;\n }\n\n const index = this.index;\n\n const expressions = this.parseExpressions();\n if (expressions.length === 1) {\n this.retreat(index);\n this.match(TokenType.TABLE);\n return this.expression(IntoExpr, {\n this: this.parseTable({\n schema: true,\n }),\n bulkCollect,\n });\n }\n\n return this.expression(IntoExpr, {\n bulkCollect,\n expressions,\n });\n }\n\n public parseHintFunctionCall (): Expression | undefined {\n if (!this.curr || !this.next || this.next.tokenType !== TokenType.L_PAREN) {\n return undefined;\n }\n\n const thisText = this.curr.text;\n this.advance(2);\n const args = this.parseHintArgs();\n const expr = this.expression(AnonymousExpr, {\n this: thisText,\n expressions: args,\n });\n this.matchRParen(expr);\n return expr;\n }\n\n public parseHintArgs (): Expression[] {\n const args: Expression[] = [\n ];\n let result = this.parseVar();\n\n while (result) {\n args.push(result);\n result = this.parseVar();\n }\n\n return args;\n }\n\n public parseConnectWithPrior (): Expression | undefined {\n return this.parseAssignment();\n }\n\n public parseColumnOps (thisExpr: Expression | undefined): Expression | undefined {\n const result = super.parseColumnOps(thisExpr);\n\n if (!result) {\n return result;\n }\n\n const index = this.index;\n const intervalSpan = this.parseIntervalSpan(result);\n if (intervalSpan.args.unit instanceof IntervalSpanExpr) {\n return intervalSpan;\n }\n\n this.retreat(index);\n return result;\n }\n\n public parseInsertTable (): Expression | undefined {\n const thisExpr = this.parseTableParts({\n schema: true,\n });\n\n if (thisExpr instanceof TableExpr) {\n const aliasName = this.parseIdVar({\n anyToken: false,\n });\n if (aliasName instanceof IdentifierExpr) {\n thisExpr.setArgKey('alias', new TableAliasExpr({\n this: aliasName,\n }));\n }\n\n thisExpr.setArgKey('partition', this.parsePartition());\n\n return this.parseSchema({\n this: thisExpr,\n });\n }\n\n return thisExpr;\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get TABLE_ALIAS_TOKENS (): Set<TokenType> {\n return new Set([\n ...Parser.TABLE_ALIAS_TOKENS,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n}\nexport class OracleGenerator extends Generator {\n @cache\n static get AFTER_HAVING_MODIFIER_TRANSFORMS () {\n const modifiers = new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);\n [\n 'cluster',\n 'distribute',\n 'sort',\n ].forEach((m) => modifiers.delete(m));\n return modifiers;\n }\n\n // port from _Dialect metaclass logic\n static readonly SELECT_KINDS: string[] = [\n ];\n // port from _Dialect metaclass logic\n static TRY_SUPPORTED = false;\n // port from _Dialect metaclass logic\n static SUPPORTS_UESCAPE = false;\n static LOCKING_READS_SUPPORTED = true;\n static JOIN_HINTS = false;\n static TABLE_HINTS = false;\n static DATA_TYPE_SPECIFIERS_ALLOWED = true;\n static ALTER_TABLE_INCLUDE_COLUMN_KEYWORD = false;\n static LIMIT_FETCH = 'FETCH';\n static TABLESAMPLE_KEYWORDS = 'SAMPLE';\n static LAST_DAY_SUPPORTS_DATE_PART = false;\n static SUPPORTS_SELECT_INTO = true;\n static TZ_TO_WITH_TIME_ZONE = true;\n static SUPPORTS_WINDOW_EXCLUDE = true;\n static QUERY_HINT_SEP = ' ';\n static SUPPORTS_DECODE_CASE = true;\n\n @cache\n static get TYPE_MAPPING (): Map<DataTypeExprKind | string, string> {\n const mapping = new Map(Generator.TYPE_MAPPING);\n mapping.set(DataTypeExprKind.TINYINT, 'SMALLINT');\n mapping.set(DataTypeExprKind.SMALLINT, 'SMALLINT');\n mapping.set(DataTypeExprKind.INT, 'INT');\n mapping.set(DataTypeExprKind.BIGINT, 'INT');\n mapping.set(DataTypeExprKind.DECIMAL, 'NUMBER');\n mapping.set(DataTypeExprKind.DOUBLE, 'DOUBLE PRECISION');\n mapping.set(DataTypeExprKind.VARCHAR, 'VARCHAR2');\n mapping.set(DataTypeExprKind.NVARCHAR, 'NVARCHAR2');\n mapping.set(DataTypeExprKind.NCHAR, 'NCHAR');\n mapping.set(DataTypeExprKind.TEXT, 'CLOB');\n mapping.set(DataTypeExprKind.TIMETZ, 'TIME');\n mapping.set(DataTypeExprKind.TIMESTAMPNTZ, 'TIMESTAMP');\n mapping.set(DataTypeExprKind.TIMESTAMPTZ, 'TIMESTAMP');\n mapping.set(DataTypeExprKind.BINARY, 'BLOB');\n mapping.set(DataTypeExprKind.VARBINARY, 'BLOB');\n mapping.set(DataTypeExprKind.ROWVERSION, 'BLOB');\n mapping.delete(DataTypeExprKind.BLOB);\n return mapping;\n }\n\n @cache\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get ORIGINAL_TRANSFORMS (): Map<typeof Expression, (this: Generator, e: any) => string> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const m = new Map<typeof Expression, (this: Generator, e: any) => string>(Generator.TRANSFORMS);\n m.set(DateStrToDateExpr, function (this: Generator, e: DateStrToDateExpr) {\n return this.func('TO_DATE', [\n e.args.this,\n literal('YYYY-MM-DD'),\n ]);\n });\n m.set(DateTruncExpr, function (this: Generator, e: DateTruncExpr) {\n return this.func('TRUNC', [\n e.args.this,\n e.args.unit,\n ]);\n });\n m.set(EuclideanDistanceExpr, renameFunc('L2_DISTANCE'));\n m.set(ILikeExpr, noIlikeSql);\n m.set(LogicalOrExpr, renameFunc('MAX'));\n m.set(LogicalAndExpr, renameFunc('MIN'));\n m.set(ModExpr, renameFunc('MOD'));\n m.set(RandExpr, renameFunc('DBMS_RANDOM.VALUE'));\n m.set(SelectExpr, preprocess([\n eliminateDistinctOn,\n eliminateQualify,\n ]));\n m.set(StrPositionExpr, function (this: Generator, e: StrPositionExpr) {\n return (\n strPositionSql.call(this, e, {\n funcName: 'INSTR',\n supportsPosition: true,\n supportsOccurrence: true,\n })\n );\n });\n m.set(StrToTimeExpr, function (this: Generator, e: StrToTimeExpr) {\n return this.func('TO_TIMESTAMP', [\n e.args.this,\n this.formatTime(e),\n ]);\n });\n m.set(StrToDateExpr, function (this: Generator, e: StrToDateExpr) {\n return this.func('TO_DATE', [\n e.args.this,\n this.formatTime(e),\n ]);\n });\n m.set(SubqueryExpr, function (this: Generator, e: SubqueryExpr) {\n return this.subquerySql(e, {\n sep: ' ',\n });\n });\n m.set(SubstringExpr, renameFunc('SUBSTR'));\n m.set(TableExpr, function (this: Generator, e: TableExpr) {\n return this.tableSql(e, {\n sep: ' ',\n });\n });\n m.set(TableSampleExpr, function (this: Generator, e: TableSampleExpr) {\n return this.tableSampleSql(e);\n });\n m.set(TemporaryPropertyExpr, (e: TemporaryPropertyExpr) => `${e.args.this || 'GLOBAL'} TEMPORARY`);\n m.set(TimeToStrExpr, function (this: Generator, e: TimeToStrExpr) {\n return this.func('TO_CHAR', [\n e.args.this,\n this.formatTime(e),\n ]);\n });\n m.set(ToCharExpr, function (this: Generator, e: ToCharExpr) {\n return this.functionFallbackSql(e);\n });\n m.set(ToNumberExpr, toNumberWithNlsParam);\n m.set(TrimExpr, trimSqlEx);\n m.set(UnicodeExpr, function (this: Generator, e: UnicodeExpr) {\n return `ASCII(UNISTR(${this.sql(e.args.this)}))`;\n });\n m.set(UnixToTimeExpr, function (this: Generator, e: UnixToTimeExpr) {\n return `TO_DATE('1970-01-01', 'YYYY-MM-DD') + (${this.sql(e, 'this')} / 86400)`;\n });\n m.set(UtcTimestampExpr, renameFunc('UTC_TIMESTAMP'));\n m.set(UtcTimeExpr, renameFunc('UTC_TIME'));\n m.set(SystimestampExpr, () => 'SYSTIMESTAMP');\n return m;\n }\n\n @cache\n static get PROPERTIES_LOCATION (): Map<typeof Expression, PropertiesLocation> {\n const m = new Map(Generator.PROPERTIES_LOCATION);\n m.set(VolatilePropertyExpr, PropertiesLocation.UNSUPPORTED);\n return m;\n }\n\n public currentTimestampSql (expression: CurrentTimestampExpr): string {\n if (expression.args.sysdate) {\n return 'SYSDATE';\n }\n\n const thisExpr = expression.args.this;\n return thisExpr\n ? this.func('CURRENT_TIMESTAMP', [\n thisExpr,\n ])\n : 'CURRENT_TIMESTAMP';\n }\n\n public offsetSql (expression: OffsetExpr): string {\n return `${super.offsetSql(expression)} ROWS`;\n }\n\n public addColumnSql (expression: Expression): string {\n return `ADD ${this.sql(expression)}`;\n }\n\n public queryOptionSql (expression: QueryOptionExpr): string {\n const option = this.sql(expression, 'this');\n let value = this.sql(expression, 'expression');\n value = value ? ` CONSTRAINT ${value}` : '';\n\n return `${option}${value}`;\n }\n\n public coalesceSql (expression: CoalesceExpr): string {\n const funcName = expression.args.isNvl ? 'NVL' : 'COALESCE';\n return renameFunc(funcName).call(this, expression);\n }\n\n public intoSql (expression: IntoExpr): string {\n const into = !expression.args.bulkCollect ? 'INTO' : 'BULK COLLECT INTO';\n if (expression.args.this) {\n return `${this.seg(into)} ${this.sql(expression, 'this')}`;\n }\n\n return `${this.seg(into)} ${this.expressions(expression)}`;\n }\n\n public hintSql (expression: HintExpr): string {\n const expressions: string[] = [\n ];\n\n for (const e of expression.args.expressions || [\n ]) {\n if (e instanceof AnonymousExpr) {\n const formattedArgs = this.formatArgs(e.args.expressions || [\n ], {\n sep: ' ',\n });\n expressions.push(`${this.sql(e, 'this')}(${formattedArgs})`);\n } else {\n expressions.push(this.sql(e));\n }\n }\n\n return ` /*+ ${this.expressions(undefined, {\n sqls: expressions,\n sep: this._constructor.QUERY_HINT_SEP,\n }).trim()} */`;\n }\n\n public isAsciiSql (expression: IsAsciiExpr): string {\n return `NVL(REGEXP_LIKE(${this.sql(expression.args.this)}, '^[' || CHR(1) || '-' || CHR(127) || ']*$'), TRUE)`;\n }\n\n public intervalSql (expression: IntervalExpr): string {\n return `${expression.args.this instanceof LiteralExpr ? 'INTERVAL ' : ''}${this.sql(expression, 'this')} ${this.sql(expression, 'unit')}`;\n }\n\n public columnDefSql (expression: ColumnDefExpr, options: {sep?: string} = {}): string {\n let {\n sep = ' ',\n } = options;\n const paramConstraint = expression.find(InOutColumnConstraintExpr);\n if (paramConstraint) {\n sep = ` ${this.sql(paramConstraint)} `;\n paramConstraint.parent?.pop();\n }\n return super.columnDefSql(expression, {\n sep,\n });\n }\n}\n\nexport class Oracle extends Dialect {\n static DIALECT_NAME = Dialects.ORACLE;\n static ALIAS_POST_TABLESAMPLE = true;\n static LOCKING_READS_SUPPORTED = true;\n static TABLESAMPLE_SIZE_IS_PERCENT = true;\n\n @cache\n static get NULL_ORDERING () {\n return NullOrdering.NULLS_ARE_LARGE;\n }\n\n static ON_CONDITION_EMPTY_BEFORE_ERROR = false;\n static ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN = false;\n static DISABLES_ALIAS_REF_EXPANSION = true;\n\n @cache\n static get NORMALIZATION_STRATEGY () {\n return NormalizationStrategy.UPPERCASE;\n }\n\n @cache\n static get TIME_MAPPING () {\n return {\n D: '%u',\n DAY: '%A',\n DD: '%d',\n DDD: '%j',\n DY: '%a',\n HH: '%I',\n HH12: '%I',\n HH24: '%H',\n IW: '%V',\n MI: '%M',\n MM: '%m',\n MON: '%b',\n MONTH: '%B',\n SS: '%S',\n WW: '%W',\n YY: '%y',\n YYYY: '%Y',\n FF6: '%f',\n };\n }\n\n @cache\n static get PSEUDOCOLUMNS () {\n return new Set([\n 'ROWNUM',\n 'ROWID',\n 'OBJECT_ID',\n 'OBJECT_VALUE',\n 'LEVEL',\n ]);\n }\n\n public canQuote (identifier: IdentifierExpr, options: {identify?: string | boolean} = {}): boolean {\n const {\n identify = 'safe',\n } = options;\n\n return (\n identifier.args.quoted || !(identifier.parent instanceof PseudocolumnExpr)\n ) && super.canQuote(identifier, {\n identify,\n });\n }\n\n static Tokenizer = OracleTokenizer;\n static Parser = OracleParser;\n static Generator = OracleGenerator;\n}\n\nDialect.register(Dialects.ORACLE, Oracle);\n"]}
|