dbgate-plugin-oracle 6.4.1 → 6.4.3-alpha.1

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/dist/backend.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={994:(e,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.oracleSplitterOptions=n.redisSplitterOptions=n.noSplitSplitterOptions=n.mongoSplitterOptions=n.sqliteSplitterOptions=n.postgreSplitterOptions=n.mssqlSplitterOptions=n.mysqlSplitterOptions=n.defaultSplitterOptions=void 0,n.defaultSplitterOptions={stringsBegins:["'"],stringsEnds:{"'":"'"},stringEscapes:{"'":"'"},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},n.mysqlSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`"],stringsEnds:{"'":"'","`":"`"},stringEscapes:{"'":"\\","`":"`"}}),n.mssqlSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),n.postgreSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),n.sqliteSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),n.mongoSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),n.noSplitSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{noSplit:!0}),n.redisSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{splitByLines:!0}),n.oracleSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}})},688:(e,n,a)=>{const t=a(825),s=a(926),{DatabaseAnalyser:r,isTypeString:i,isTypeNumeric:o}=global.DBGATE_PACKAGES["dbgate-tools"];function l({is_nullable:e,column_name:n,data_type:a,char_max_length:t,numeric_precision:s,numeric_ccale:r,default_value:l},c=void 0){const m="character varying"==(u=a)?"varchar":"timestamp without time zone"==u?"timestamp":u;var u;let p=m;t&&i(m)&&(p=`${m}(${t})`),s&&r&&o(m)&&(p=`${m}(${s},${r})`);const d=!(!l||!l.endsWith(".nextval"));return{columnName:n,dataType:p,notNull:"N"==e,defaultValue:d?void 0:l?.trim(),autoIncrement:d}}e.exports=class extends r{constructor(e,n,a){super(e,n,a)}createQuery(e,n,a={}){return super.createQuery(s[e],n,a)}async _computeSingleObjectId(){const{typeField:e,pureName:n}=this.singleObjectFilter;this.singleObjectId=`${e}:${n}`}async _runAnalysis(){this.feedback({analysingMessage:"Loading tables"});const e=await this.analyserQuery("tableList",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading columns"});const n=await this.analyserQuery("columns",["tables","views"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading primary keys"});const a=await this.analyserQuery("primaryKeys",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading foreign keys"});const s=await this.analyserQuery("foreignKeys",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading views"});const i=await this.analyserQuery("views",["views"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading materialized views"});const o=this.driver.dialect.materializedViews?await this.analyserQuery("matviews",["matviews"],{$owner:this.dbhan.database}):null;this.feedback({analysingMessage:"Loading routines"});const c=await this.analyserQuery("routines",["procedures","functions"],{$owner:this.dbhan.database}),m=await this.analyserQuery("parameters",["procedures","functions"],{$owner:this.dbhan.database});console.dir(m,{depth:4});const u=m.rows.reduce(((e,n)=>(e[n.PURE_NAME]||(e[n.PURE_NAME]=[]),e[n.PURE_NAME].push({pureName:n.PURE_NAME,parameterName:n.PARAMETER_NAME,dataType:n.DATA_TYPE,charMaxLength:n.CHAR_MAX,numericPrecision:n.NUMERIC_PRECISION,numericScale:n.NUMERIC_SCALE,parameterMode:n.PARAMETER_MODE,position:n.ORDINAL_POSITION??e[n.PURE_NAME].length}),e)),{});this.feedback({analysingMessage:"Loading indexes"});const p=await this.analyserQuery("indexes",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading unique names"});const d=await this.analyserQuery("triggers",void 0,{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading triggers"});const _=await this.analyserQuery("uniqueNames",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Finalizing DB structure"});const E=s.rows.map((e=>({pureName:e.pure_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name,refColumnName:e.ref_column_name,updateAction:e.update_action,deleteAction:e.delete_action,refTableName:e.ref_table_name}))),N=a.rows.map((e=>({pureName:e.pure_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name}))),g=e=>`${e.schema_name}||${e.pure_name}`,b=t.groupBy(n.rows,g),T={tables:e.rows.map((e=>{const n={pureName:e.pure_name,objectId:`tables:${e.pure_name}`,contentHash:e.hash_code_columns?`${e.hash_code_columns}-${e.hash_code_constraints}`:null};return{...n,columns:(b[g(e)]||[]).map((e=>l(e,n))),primaryKey:r.extractPrimaryKeys(n,N),foreignKeys:r.extractForeignKeys(n,E),indexes:t.uniqBy(p.rows.filter((e=>e.tableName==n.pureName&&!_.rows.find((n=>n.constraintName==e.constraintName))&&!e.constraintName.startsWith("SYS_C"))),"constraintName").map((e=>({...t.pick(e,["constraintName","indexType"]),isUnique:"UNIQUE"===e.Unique,columns:p.rows.filter((n=>n.tableName==e.tableName&&n.constraintName==e.constraintName)).map((e=>({...t.pick(e,["columnName"]),isDescending:"DESC"==e.descending})))}))),uniques:t.uniqBy(p.rows.filter((e=>e.tableName==n.pureName&&_.rows.find((n=>n.constraintName==e.constraintName)))),"constraintName").map((e=>({...t.pick(e,["constraintName"]),columns:p.rows.filter((n=>n.tableName==e.tableName&&n.constraintName==e.constraintName)).map((e=>({...t.pick(e,["columnName"])})))}))),identitySequenceName:(b[g(e)]||[]).find((e=>e?.default_value?.endsWith(".nextval")))?.default_value?.match(/\"([^"]+)\"\.nextval/)?.[1]}})),views:i.rows.map((e=>({objectId:`views:${e.pure_name}`,pureName:e.pure_name,contentHash:e.hash_code,createSql:`CREATE VIEW "${e.pure_name}"\nAS\n${e.create_sql}`,columns:(b[g(e)]||[]).map((e=>l(e)))}))),matviews:o?o.rows.map((e=>({objectId:`matviews:${e.pure_name}`,pureName:e.pure_name,contentHash:e.hash_code,createSql:`CREATE MATERIALIZED VIEW "${e.pure_name}"\nAS\n${e.definition}`,columns:(b[g(view)]||[]).map((e=>l(e)))}))):void 0,procedures:c.rows.filter((e=>"PROCEDURE"==e.object_type)).map((e=>({objectId:`procedures:${e.pure_name}`,pureName:e.pure_name,createSql:`SET SQLTERMINATOR "/"\nCREATE ${e.source_code}\n/\n`,contentHash:e.hash_code,parameters:u[e.pure_name]}))),functions:c.rows.filter((e=>"FUNCTION"==e.object_type)).map((e=>({objectId:`functions:${e.pure_name}`,createSql:`SET SQLTERMINATOR "/"\nCREATE ${e.source_code}\n/\n`,pureName:e.pure_name,contentHash:e.hash_code,parameters:u[e.pure_name]}))),triggers:d.rows.map((e=>({pureName:e.trigger_name,createSql:`SET SQLTERMINATOR "/"\nCREATE TRIGGER "${e.trigger_name}" ${e.trigger_timing.includes("BEFORE")?"BEFORE":"AFTER"} ${e.event_type} ON "${e.table_name}" FOR EACH ROW ${e.definition} \n/\n`,tableName:e.table_name,triggerLevel:e.trigger_level,triggerTiming:e.trigger_timing,eventType:e.event_type})))};return this.feedback({analysingMessage:null}),T}}},866:(e,n,a)=>{const{createBulkInsertStreamBase:t}=global.DBGATE_PACKAGES["dbgate-tools"],s=a(825);e.exports=function(e,n,a,r,i){const o=r.schemaName?`${e.dialect.quoteIdentifier(r.schemaName)}.${e.dialect.quoteIdentifier(r.pureName)}`:e.dialect.quoteIdentifier(r.pureName),l=t(e,n,a,r,{...i,commitAfterInsert:!0});return l.send=async()=>{const n=e.createDumper();n.putRaw(`INSERT INTO ${o} (`),n.putCollection(",",l.columnNames,(a=>n.putRaw(e.dialect.quoteIdentifier(a)))),n.putRaw(")\n VALUES (\n"),n.put("%,s",l.columnNames.map(((e,n)=>"timestamp"==l.columnDataTypes?.[e]?.toLowerCase()?`CASE WHEN :C${n} IS NULL THEN NULL ELSE TO_TIMESTAMP(:C${n}, 'YYYY-MM-DD"T"HH24:MI:SS') END`:"date"==l.columnDataTypes?.[e]?.toLowerCase()?`CASE WHEN :C${n} IS NULL THEN NULL ELSE TO_DATE(:C${n}, 'YYYY-MM-DD"T"HH24:MI:SS') END`:`:C${n}`))),n.putRaw(")");const t=l.buffer.map((e=>s.mapKeys(e,((e,n)=>`c${l.columnNames.indexOf(n)}`))));await a.client.executeMany(n.s,t,{autoCommit:!0}),l.buffer=[]},l}},831:(e,n,a)=>{const t=a(825),s=a(203),r=a(534),i=a(688),{makeUniqueColumnNames:o}=global.DBGATE_PACKAGES["dbgate-tools"],l=a(866);let c,m;function u(e){if(!e)return[];const n=e.map((e=>({columnName:e.name})));return o(n),n}function p(e,n){return t.zipObject(n.map((e=>e.columnName)),e)}let d=!1;const _={...r,analyserClass:i,async connect({engine:e,server:n,port:t,user:s,password:r,database:i,databaseUrl:o,useDatabaseUrl:l,serviceName:c,serviceNameType:u,ssl:p,isReadOnly:_,authType:E,clientLibraryPath:N,socketPath:g}){const b=(m||(m=a(504),m.fetchAsString=[m.CLOB,m.NCLOB]),m);return"thick"!=E||d||(b.initOracleClient({libDir:N||process.env.ORACLE_INSTANT_CLIENT}),d=!0),client=await b.getConnection({user:s,password:r,connectString:l?o:c?"sid"==u?`(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=${n})(PORT=${t||1521}))(CONNECT_DATA=(SID=${c})))`:`${n}:${t||1521}/${c}`:`${n}:${t||1521}`}),i&&await client.execute(`ALTER SESSION SET CURRENT_SCHEMA = ${i}`),{client,database:i}},close:async e=>e.client.close(),async query(e,n){if(null==n||""==n.trim())return{rows:[],columns:[]};const a=n.match(/^(.*);\s*$/s);a&&(n=a[1]);const t=await e.client.execute(n);try{const e=u(t.metaData);return{rows:(t.rows||[]).map((n=>p(n,e))),columns:e}}catch(e){return{rows:[],columns:[]}}},stream(e,n,a){if(n.trim().toLowerCase().startsWith("select")){const s=e.client.queryStream(n);let r=!1;s.on("metadata",(e=>{r||(columns=u(e),columns&&columns.length>0&&a.recordset(columns),r=!0)})),s.on("data",(e=>{r||(columns=u(e),columns&&columns.length>0&&a.recordset(columns),r=!0),a.row(p(e,columns))})),s.on("end",(()=>{const{command:e,rowCount:n}=s._result||{};"SELECT"!=e&&t.isNumber(n)&&a.info({message:`${n} rows affected`,time:new Date,severity:"info"}),r||(columns=u(s._result),columns&&columns.length>0&&a.recordset(columns),r=!0),a.done()})),s.on("error",(e=>{const{message:t,offset:s,procName:r}=e,i=(n.substring(0,s).match(/\n/g)||[]).length;a.info({message:t,offset:s,line:i,procedure:r,time:new Date,severity:"error"}),a.done()})),s.on("close",(function(){}))}else e.client.execute(n,((e,t)=>{if(e){console.log("Error query",e,n);const t=(n.substring(0,e.offset).match(/\n/g)||[]).length;a.info({message:e.message,line:t,offset:e.offset,time:new Date,severity:"error"})}else{const{rowsAffected:e,metaData:n,rows:s}=t||{};if(s&&n){const e=u(n);a.recordset(e);for(const n of s)a.row(p(n,e))}else e&&a.info({message:`${e} rows affected`,time:new Date,severity:"info"})}a.done()}))},async getVersionCore(e){try{const{rows:n}=await this.query(e,"SELECT product || ' ' || version_full as \"version\" FROM product_component_version WHERE product LIKE 'Oracle%Database%'");return n[0].version.replace(" "," ")}catch(n){const{rows:a}=await this.query(e,'SELECT banner as "version" FROM v$version');return a[0].version}},async getVersion(e){try{const n=await this.getVersionCore(e),a=n.match(/(\d+[a-z]+)\s+(\w+).*?(\d+)\.(\d+)/);let t=null,s=null,r=null;return a&&(t=`Oracle ${a[1]} ${a[2]}`,a[3]&&(s=parseInt(a[3])),a[4]&&(r=parseInt(a[4]))),{version:n,versionText:t,versionMajor:s,versionMinor:r}}catch(e){return{version:"???",versionText:"Oracle ???",versionMajor:null,versionMinor:null}}},async readQuery(e,n,a){const t=await e.client.queryStream(n);let r=!1,i=null;const o=new s.PassThrough({objectMode:!0,highWaterMark:100});return t.on("metadata",(e=>{r||(i=u(e),i&&i.length>0&&o.write({__isStreamHeader:!0,...a||{columns:i}}),r=!0)})),t.on("data",(e=>{o.write(p(e,i))})),t.on("end",(()=>{o.end()})),t.on("error",(e=>{console.error(e),o.end()})),o},async writeTable(e,n,a){return l(this,s,e,n,a)},async listDatabases(e){const{rows:n}=await this.query(e,'SELECT username as "name" from all_users order by username');return n},getAuthTypes(){if(c?.isElectron||process.env.ORACLE_INSTANT_CLIENT)return[{title:"Thin mode (default) - direct connection to Oracle database",name:"thin"},{title:"Thick mode - connection via Oracle instant client",name:"thick"}]}};_.initialize=e=>{c=e.platformInfo},e.exports=_},237:(e,n,a)=>{const t=a(831);e.exports={packageName:"dbgate-plugin-oracle",drivers:[t],initialize(e){t.initialize(e)}}},925:e=>{e.exports='\nselect\n -- owner as "schema_name",\n table_name as "pure_name",\n column_name as "column_name",\n nullable as "is_nullable",\n data_type as "data_type",\n data_length as "char_max_length",\n data_precision as "numeric_precision",\n data_scale as "numeric_scale",\n data_default as "default_value"\n FROM all_tab_columns av\n where OWNER=\'$owner\' AND \'tables:\' || TABLE_NAME =OBJECT_ID_CONDITION\norder by column_id\n'},958:e=>{e.exports='\nselect fk.constraint_name as "constraint_name",\n -- fk.owner as "constraint_schema",\n fk.table_name as "pure_name",\n -- fk.owner as "schema_name",\n fk.delete_rule as "update_action",\n fk.delete_rule as "delete_action",\n ref.table_name as "ref_table_name",\n -- ref.owner as "ref_schema_name",\n basecol.column_name as "column_name",\n refcol.column_name as "ref_column_name"\nfrom all_cons_columns refcol, all_cons_columns basecol, all_constraints ref, all_constraints fk\nwhere fk.OWNER = \'$owner\' AND fk.constraint_type = \'R\'\nand ref.owner = fk.r_owner\nand ref.constraint_name = fk.r_constraint_name\nand basecol.owner = fk.owner\nand basecol.constraint_name = fk.constraint_name\nand basecol.table_name = fk.table_name\nand refcol.owner = ref.owner\nand refcol.constraint_name = ref.constraint_name\nand refcol.table_name = ref.table_name\nAND \'tables:\' || fk.table_name =OBJECT_ID_CONDITION\norder by basecol.position\n'},926:(e,n,a)=>{const t=a(925),s=a(382),r=a(916),i=a(958),o=a(864),l=a(124),c=a(701),m=a(332),u=a(474),p=a(377),d=a(171);e.exports={columns:t,tableList:s,primaryKeys:r,foreignKeys:i,views:o,routines:c,parameters:m,matviews:l,indexes:u,triggers:p,uniqueNames:d}},474:e=>{e.exports='\nselect i.table_name as "tableName",\n -- i.table_owner as "schemaName",\n i.index_name as "constraintName",\n i.index_type as "indexType",\n i.uniqueness as "Unique",\n ic.column_name as "columnName",\n ic.descend as "descending"\nfrom all_ind_columns ic, all_indexes i\nwhere INDEX_OWNER = \'$owner\' AND ic.index_owner = i.owner\nand ic.index_name = i.index_name\nand \'tables:\' || i.table_name =OBJECT_ID_CONDITION\norder by i.table_owner,\n i.table_name,\n i.index_name,\n ic.column_position\n'},124:e=>{e.exports="\nSELECT -- owner as schema_name,\n mview_name pure_name,\n container_name,\n '' || trim(\n extractvalue(\n dbms_xmlgen.getxmltype('SELECT query\n FROM all_mviews\n WHERE mview_name=''' ||\n MVIEW_NAME || ''' AND\n owner = ''' ||\n owner || ''''\n ),\n '//text()'\n )) definition\nFROM all_mviews\nwhere OWNER = '$owner' AND 'matviews:' || mview_name=OBJECT_ID_CONDITION\norder by owner, mview_name\n"},332:e=>{e.exports="\nSELECT \n o.OBJECT_NAME AS pure_name,\n PACKAGE_NAME,\n ARGUMENT_NAME AS parameter_name,\n POSITION AS ordinal_position,\n DATA_TYPE AS data_type,\n CHAR_LENGTH AS char_max_length,\n DATA_PRECISION AS numeric_precision,\n DATA_SCALE AS numeric_scale,\n IN_OUT AS parameter_mode\nFROM \n all_objects o\nLEFT JOIN \n all_arguments a\n ON o.object_id = a.object_id\nWHERE \n o.object_type IN ('FUNCTION', 'PROCEDURE')\n AND o.OWNER = '$owner'\nORDER BY \n POSITION;\n"},916:e=>{e.exports='\nselect\n -- pk.owner as "constraint_schema",\n pk.constraint_name as "constraint_name",\n -- pk.owner as "schema_name",\n pk.table_name as "pure_name",\n basecol.column_name as "column_name"\nfrom all_cons_columns basecol,\n all_constraints pk\nwhere constraint_type = \'P\'\nand basecol.owner = pk.owner\nand basecol.constraint_name = pk.constraint_name\nand basecol.table_name = pk.table_name\nand \'tables:\' || basecol.table_name =OBJECT_ID_CONDITION\nand pk.owner = \'$owner\'\norder by basecol.position\n'},701:e=>{e.exports="\nSELECT \n name as \"pure_name\",\n type as \"object_type\",\n LISTAGG(text, '') WITHIN GROUP (ORDER BY line) AS \"source_code\",\n ora_hash(LISTAGG(text, '') WITHIN GROUP (ORDER BY line)) AS \"hash_code\"\nFROM all_source\nWHERE type in ('FUNCTION', 'PROCEDURE') AND OWNER = '$owner'\nGROUP BY name, type\n"},382:e=>{e.exports="\nselect\n -- owner \"schema_name\",\n table_name \"pure_name\"\n from\n all_tables\n where OWNER='$owner' AND 'tables:' || TABLE_NAME =OBJECT_ID_CONDITION\n"},377:e=>{e.exports="\nSELECT\n TRIGGER_TYPE AS \"trigger_timing\",\n TRIGGERING_EVENT AS \"event_type\",\n TRIGGER_BODY AS \"definition\",\n TRIGGER_NAME AS \"trigger_name\",\n TABLE_NAME AS \"table_name\",\n OWNER,\n CASE\n WHEN INSTR(TRIGGER_TYPE, 'ROW') > 0 THEN 'ROW'\n WHEN INSTR(TRIGGER_TYPE, 'STATEMENT') > 0 THEN 'STATEMENT'\n ELSE NULL\n END AS trigger_level\nFROM\n all_triggers\nWHERE\n OWNER='$owner'\n AND 'tables:' || TABLE_NAME =OBJECT_ID_CONDITION\n"},171:e=>{e.exports="\nselect constraint_name as \"constraintName\"\nfrom all_constraints\nwhere owner='$owner' and constraint_type = 'U'\n and 'tables:' || table_name =OBJECT_ID_CONDITION\n"},864:e=>{e.exports='\nselect avv.*\nfrom (select\n view_name as "pure_name",\n text as "create_sql"\n from all_views av\n where owner = \'$owner\' and text is not null\n ) avv\n where \'views:\' || "pure_name" is not null\n'},197:e=>{const{SqlDumper:n,arrayToHexString:a,testEqualTypes:t}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends n{createDatabase(e){this.put(`CREATE USER c##${e}\n IDENTIFIED BY ${e}\n DEFAULT TABLESPACE users\n TEMPORARY TABLESPACE temp\n QUOTA 10M ON users`)}dropDatabase(e){this.put(`DROP USER ${e}`)}beginTransaction(){}columnDefinition(e,n){if(e.autoIncrement)return super.columnType(e.dataType),void this.put(" ^generated ^by ^default ^on ^null ^as ^identity");super.columnDefinition(e,n)}renameColumn(e,n){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,n)}changeColumn(e,n,a){e.columnName!=n.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,n.columnName),e.notNull||this.fillNewNotNullDefaults(n),t(e,n)&&e.notNull==n.notNull||this.putCmd("^alter ^table %f ^modify (%i %s %k)",n,n.columnName,n.dataType,n.notNull?"not null":"null"),e.defaultValue!=n.defaultValue&&(n.defaultValue?.trim()?this.putCmd("^alter ^table %f ^modify (%i ^default %s)",n,n.columnName,n.defaultValue):this.putCmd("^alter ^table %f ^modify (%i ^default ^null)",n,n.columnName))}selectScopeIdentity(e){const n=e.identitySequenceName;n&&this.put("^select %i.CURRVAL FROM DUAL",n)}renameTable(e,n){this.putCmd("^alter ^table %f ^rename ^to %i",e,n)}renameSqlObject(e,n){this.putCmd("^rename %f ^to %i",e,n)}putValue(e,n){"timestamp"==n?.toLowerCase()?this.putRaw(`TO_TIMESTAMP('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):"date"==n?.toLowerCase()?this.putRaw(`TO_DATE('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):super.putValue(e)}}},534:(e,n,a)=>{const{driverBase:t}=global.DBGATE_PACKAGES["dbgate-tools"],s=a(197),{oracleSplitterOptions:r}=a(994),i=["GEOGRAPHY"],o={rangeSelect:!0,limitSelect:!1,offsetFetchRangeSyntax:!0,rowNumberOverPaging:!0,ilike:!1,stringEscapeChar:"'",fallbackDataType:"varchar(250)",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',userDatabaseNamePrefix:"C##",upperCaseAllDbObjectNames:!0,requireStandaloneSelectForScopeIdentity:!0,defaultValueBeforeNullability:!0,createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,renameSqlObject:!0,dropReferencesWhenDropTable:!0,requireFromDual:!0,predefinedDataTypes:["VARCHAR2","NUMBER","DATE","CLOB","BLOB","INTEGER","BFILE","BINARY_DOUBLE","BINARY_FLOAT","CHAR","FLOAT","INTERVAL DAY","INTERVAL YEAR","LONG","LONG RAW","NCHAR","NCLOB","NVARCHAR2","RAW","ROWID","TIMESTAMP","UROWID"],createColumnViewExpression(e,n,a,t){if(n&&i.includes(n.toUpperCase()))return{exprType:"call",func:"ST_AsText",alias:t||e,args:[{exprType:"column",columnName:e,source:a}]}}},l={...t,engine:"oracle@dbgate-plugin-oracle",title:"OracleDB",defaultPort:1521,authTypeLabel:"Driver mode",defaultAuthTypeName:"thin",dialect:o,dumperClass:s,getQuerySplitterOptions:()=>r,readOnlySessions:!0,supportsTransactions:!0,implicitTransactions:!0,databaseUrlPlaceholder:"e.g. localhost:1521/orcl",showConnectionField:(e,n,{config:a})=>"useDatabaseUrl"==e||"authType"==e||("clientLibraryPath"==e?a?.isElectron&&"thick"==n.authType:n.useDatabaseUrl?["databaseUrl","user","password"].includes(e):["user","password","server","port","serviceName"].includes(e)),getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New materialized view",sql:"CREATE MATERIALIZED VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"CREATE PROCEDURE myproc (arg1 INT)\nLANGUAGE SQL\nAS $$\n SELECT * FROM table1;\n$$"},{label:"New function (plpgsql)",sql:"CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT\nAS $$\nBEGIN\n RETURN 1;\nEND\n$$ LANGUAGE plpgsql;"},{label:"New trigger",sql:'\nCREATE OR REPLACE TRIGGER trigger_name\nAFTER INSERT ON "table_name" FOR EACH ROW \nBEGIN\nEND trigger_name;\n'}],dialectByVersion:e=>e?{...o,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3)}:o,showConnectionTab:e=>"sshTunnel"==e,dialectByVersion:e=>e&&e.versionMajor<12?{...o,rangeSelect:!1,offsetFetchRangeSyntax:!1}:o,adaptDataType:e=>"datetime"==e?.toLowerCase()?"timestamp":"text"==e?.toLowerCase()?"clob":e};e.exports=l},825:e=>{"use strict";e.exports=require("lodash")},504:e=>{"use strict";e.exports=require("oracledb")},203:e=>{"use strict";e.exports=require("stream")}},n={},a=function a(t){var s=n[t];if(void 0!==s)return s.exports;var r=n[t]={exports:{}};return e[t](r,r.exports,a),r.exports}(237);module.exports=a})();
1
+ (()=>{var e={994:(e,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.oracleSplitterOptions=n.redisSplitterOptions=n.noSplitSplitterOptions=n.mongoSplitterOptions=n.sqliteSplitterOptions=n.postgreSplitterOptions=n.mssqlSplitterOptions=n.mysqlSplitterOptions=n.defaultSplitterOptions=void 0,n.defaultSplitterOptions={stringsBegins:["'"],stringsEnds:{"'":"'"},stringEscapes:{"'":"'"},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},n.mysqlSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),n.mssqlSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),n.postgreSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),n.sqliteSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),n.mongoSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),n.noSplitSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{noSplit:!0}),n.redisSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{splitByLines:!0}),n.oracleSplitterOptions=Object.assign(Object.assign({},n.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}})},688:(e,n,a)=>{const t=a(825),s=a(926),{DatabaseAnalyser:r,isTypeString:i,isTypeNumeric:o}=global.DBGATE_PACKAGES["dbgate-tools"];function l({is_nullable:e,column_name:n,data_type:a,char_max_length:t,numeric_precision:s,numeric_ccale:r,default_value:l},c=void 0){const m="character varying"==(u=a)?"varchar":"timestamp without time zone"==u?"timestamp":u;var u;let p=m;t&&i(m)&&(p=`${m}(${t})`),s&&r&&o(m)&&(p=`${m}(${s},${r})`);const d=!(!l||!l.endsWith(".nextval"));return{columnName:n,dataType:p,notNull:"N"==e,defaultValue:d?void 0:l?.trim(),autoIncrement:d}}e.exports=class extends r{constructor(e,n,a){super(e,n,a)}createQuery(e,n,a={}){return super.createQuery(s[e],n,a)}async _computeSingleObjectId(){const{typeField:e,pureName:n}=this.singleObjectFilter;this.singleObjectId=`${e}:${n}`}async _runAnalysis(){this.feedback({analysingMessage:"Loading tables"});const e=await this.analyserQuery("tableList",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading columns"});const n=await this.analyserQuery("columns",["tables","views"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading primary keys"});const a=await this.analyserQuery("primaryKeys",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading foreign keys"});const s=await this.analyserQuery("foreignKeys",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading views"});const i=await this.analyserQuery("views",["views"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading materialized views"});const o=this.driver.dialect.materializedViews?await this.analyserQuery("matviews",["matviews"],{$owner:this.dbhan.database}):null;this.feedback({analysingMessage:"Loading routines"});const c=await this.analyserQuery("routines",["procedures","functions"],{$owner:this.dbhan.database}),m=await this.analyserQuery("parameters",["procedures","functions"],{$owner:this.dbhan.database});console.dir(m,{depth:4});const u=m.rows.reduce(((e,n)=>(e[n.PURE_NAME]||(e[n.PURE_NAME]=[]),e[n.PURE_NAME].push({pureName:n.PURE_NAME,parameterName:n.PARAMETER_NAME,dataType:n.DATA_TYPE,charMaxLength:n.CHAR_MAX,numericPrecision:n.NUMERIC_PRECISION,numericScale:n.NUMERIC_SCALE,parameterMode:n.PARAMETER_MODE,position:n.ORDINAL_POSITION??e[n.PURE_NAME].length}),e)),{});this.feedback({analysingMessage:"Loading indexes"});const p=await this.analyserQuery("indexes",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading unique names"});const d=await this.analyserQuery("triggers",void 0,{$owner:this.dbhan.database});this.feedback({analysingMessage:"Loading triggers"});const _=await this.analyserQuery("uniqueNames",["tables"],{$owner:this.dbhan.database});this.feedback({analysingMessage:"Finalizing DB structure"});const E=s.rows.map((e=>({pureName:e.pure_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name,refColumnName:e.ref_column_name,updateAction:e.update_action,deleteAction:e.delete_action,refTableName:e.ref_table_name}))),N=a.rows.map((e=>({pureName:e.pure_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name}))),g=e=>`${e.schema_name}||${e.pure_name}`,b=t.groupBy(n.rows,g),T={tables:e.rows.map((e=>{const n={pureName:e.pure_name,objectId:`tables:${e.pure_name}`,contentHash:e.hash_code_columns?`${e.hash_code_columns}-${e.hash_code_constraints}`:null};return{...n,columns:(b[g(e)]||[]).map((e=>l(e,n))),primaryKey:r.extractPrimaryKeys(n,N),foreignKeys:r.extractForeignKeys(n,E),indexes:t.uniqBy(p.rows.filter((e=>e.tableName==n.pureName&&!_.rows.find((n=>n.constraintName==e.constraintName))&&!e.constraintName.startsWith("SYS_C"))),"constraintName").map((e=>({...t.pick(e,["constraintName","indexType"]),isUnique:"UNIQUE"===e.Unique,columns:p.rows.filter((n=>n.tableName==e.tableName&&n.constraintName==e.constraintName)).map((e=>({...t.pick(e,["columnName"]),isDescending:"DESC"==e.descending})))}))),uniques:t.uniqBy(p.rows.filter((e=>e.tableName==n.pureName&&_.rows.find((n=>n.constraintName==e.constraintName)))),"constraintName").map((e=>({...t.pick(e,["constraintName"]),columns:p.rows.filter((n=>n.tableName==e.tableName&&n.constraintName==e.constraintName)).map((e=>({...t.pick(e,["columnName"])})))}))),identitySequenceName:(b[g(e)]||[]).find((e=>e?.default_value?.endsWith(".nextval")))?.default_value?.match(/\"([^"]+)\"\.nextval/)?.[1]}})),views:i.rows.map((e=>({objectId:`views:${e.pure_name}`,pureName:e.pure_name,contentHash:e.hash_code,createSql:`CREATE VIEW "${e.pure_name}"\nAS\n${e.create_sql}`,columns:(b[g(e)]||[]).map((e=>l(e)))}))),matviews:o?o.rows.map((e=>({objectId:`matviews:${e.pure_name}`,pureName:e.pure_name,contentHash:e.hash_code,createSql:`CREATE MATERIALIZED VIEW "${e.pure_name}"\nAS\n${e.definition}`,columns:(b[g(view)]||[]).map((e=>l(e)))}))):void 0,procedures:c.rows.filter((e=>"PROCEDURE"==e.object_type)).map((e=>({objectId:`procedures:${e.pure_name}`,pureName:e.pure_name,createSql:`SET SQLTERMINATOR "/"\nCREATE ${e.source_code}\n/\n`,contentHash:e.hash_code,parameters:u[e.pure_name]}))),functions:c.rows.filter((e=>"FUNCTION"==e.object_type)).map((e=>({objectId:`functions:${e.pure_name}`,createSql:`SET SQLTERMINATOR "/"\nCREATE ${e.source_code}\n/\n`,pureName:e.pure_name,contentHash:e.hash_code,parameters:u[e.pure_name]}))),triggers:d.rows.map((e=>({pureName:e.trigger_name,createSql:`SET SQLTERMINATOR "/"\nCREATE TRIGGER "${e.trigger_name}" ${e.trigger_timing.includes("BEFORE")?"BEFORE":"AFTER"} ${e.event_type} ON "${e.table_name}" FOR EACH ROW ${e.definition} \n/\n`,tableName:e.table_name,triggerLevel:e.trigger_level,triggerTiming:e.trigger_timing,eventType:e.event_type})))};return this.feedback({analysingMessage:null}),T}}},866:(e,n,a)=>{const{createBulkInsertStreamBase:t}=global.DBGATE_PACKAGES["dbgate-tools"],s=a(825);e.exports=function(e,n,a,r,i){const o=r.schemaName?`${e.dialect.quoteIdentifier(r.schemaName)}.${e.dialect.quoteIdentifier(r.pureName)}`:e.dialect.quoteIdentifier(r.pureName),l=t(e,n,a,r,{...i,commitAfterInsert:!0});return l.send=async()=>{const n=e.createDumper();n.putRaw(`INSERT INTO ${o} (`),n.putCollection(",",l.columnNames,(a=>n.putRaw(e.dialect.quoteIdentifier(a)))),n.putRaw(")\n VALUES (\n"),n.put("%,s",l.columnNames.map(((e,n)=>"timestamp"==l.columnDataTypes?.[e]?.toLowerCase()?`CASE WHEN :C${n} IS NULL THEN NULL ELSE TO_TIMESTAMP(:C${n}, 'YYYY-MM-DD"T"HH24:MI:SS') END`:"date"==l.columnDataTypes?.[e]?.toLowerCase()?`CASE WHEN :C${n} IS NULL THEN NULL ELSE TO_DATE(:C${n}, 'YYYY-MM-DD"T"HH24:MI:SS') END`:`:C${n}`))),n.putRaw(")");const t=l.buffer.map((e=>s.mapKeys(e,((e,n)=>`c${l.columnNames.indexOf(n)}`))));await a.client.executeMany(n.s,t,{autoCommit:!0}),l.buffer=[]},l}},831:(e,n,a)=>{const t=a(825),s=a(203),r=a(534),i=a(688),{makeUniqueColumnNames:o}=global.DBGATE_PACKAGES["dbgate-tools"],l=a(866);let c,m;function u(e){if(!e)return[];const n=e.map((e=>({columnName:e.name})));return o(n),n}function p(e,n){return t.zipObject(n.map((e=>e.columnName)),e)}let d=!1;const _={...r,analyserClass:i,async connect({engine:e,server:n,port:t,user:s,password:r,database:i,databaseUrl:o,useDatabaseUrl:l,serviceName:c,serviceNameType:u,ssl:p,isReadOnly:_,authType:E,clientLibraryPath:N,socketPath:g}){const b=(m||(m=a(504),m.fetchAsString=[m.CLOB,m.NCLOB]),m);return"thick"!=E||d||(b.initOracleClient({libDir:N||process.env.ORACLE_INSTANT_CLIENT}),d=!0),client=await b.getConnection({user:s,password:r,connectString:l?o:c?"sid"==u?`(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=${n})(PORT=${t||1521}))(CONNECT_DATA=(SID=${c})))`:`${n}:${t||1521}/${c}`:`${n}:${t||1521}`}),i&&await client.execute(`ALTER SESSION SET CURRENT_SCHEMA = ${i}`),{client,database:i}},close:async e=>e.client.close(),async query(e,n){if(null==n||""==n.trim())return{rows:[],columns:[]};const a=n.match(/^(.*);\s*$/s);a&&(n=a[1]);const t=await e.client.execute(n);try{const e=u(t.metaData);return{rows:(t.rows||[]).map((n=>p(n,e))),columns:e}}catch(e){return{rows:[],columns:[]}}},stream(e,n,a){if(n.trim().toLowerCase().startsWith("select")){const s=e.client.queryStream(n);let r=!1;s.on("metadata",(e=>{r||(columns=u(e),columns&&columns.length>0&&a.recordset(columns),r=!0)})),s.on("data",(e=>{r||(columns=u(e),columns&&columns.length>0&&a.recordset(columns),r=!0),a.row(p(e,columns))})),s.on("end",(()=>{const{command:e,rowCount:n}=s._result||{};"SELECT"!=e&&t.isNumber(n)&&a.info({message:`${n} rows affected`,time:new Date,severity:"info"}),r||(columns=u(s._result),columns&&columns.length>0&&a.recordset(columns),r=!0),a.done()})),s.on("error",(e=>{const{message:t,offset:s,procName:r}=e,i=(n.substring(0,s).match(/\n/g)||[]).length;a.info({message:t,offset:s,line:i,procedure:r,time:new Date,severity:"error"}),a.done()})),s.on("close",(function(){}))}else e.client.execute(n,((e,t)=>{if(e){console.log("Error query",e,n);const t=(n.substring(0,e.offset).match(/\n/g)||[]).length;a.info({message:e.message,line:t,offset:e.offset,time:new Date,severity:"error"})}else{const{rowsAffected:e,metaData:n,rows:s}=t||{};if(s&&n){const e=u(n);a.recordset(e);for(const n of s)a.row(p(n,e))}else e&&a.info({message:`${e} rows affected`,time:new Date,severity:"info"})}a.done()}))},async getVersionCore(e){try{const{rows:n}=await this.query(e,"SELECT product || ' ' || version_full as \"version\" FROM product_component_version WHERE product LIKE 'Oracle%Database%'");return n[0].version.replace(" "," ")}catch(n){const{rows:a}=await this.query(e,'SELECT banner as "version" FROM v$version');return a[0].version}},async getVersion(e){try{const n=await this.getVersionCore(e),a=n.match(/(\d+[a-z]+)\s+(\w+).*?(\d+)\.(\d+)/);let t=null,s=null,r=null;return a&&(t=`Oracle ${a[1]} ${a[2]}`,a[3]&&(s=parseInt(a[3])),a[4]&&(r=parseInt(a[4]))),{version:n,versionText:t,versionMajor:s,versionMinor:r}}catch(e){return{version:"???",versionText:"Oracle ???",versionMajor:null,versionMinor:null}}},async readQuery(e,n,a){const t=await e.client.queryStream(n);let r=!1,i=null;const o=new s.PassThrough({objectMode:!0,highWaterMark:100});return t.on("metadata",(e=>{r||(i=u(e),i&&i.length>0&&o.write({__isStreamHeader:!0,...a||{columns:i}}),r=!0)})),t.on("data",(e=>{o.write(p(e,i))})),t.on("end",(()=>{o.end()})),t.on("error",(e=>{console.error(e),o.end()})),o},async writeTable(e,n,a){return l(this,s,e,n,a)},async listDatabases(e){const{rows:n}=await this.query(e,'SELECT username as "name" from all_users order by username');return n},getAuthTypes(){if(c?.isElectron||process.env.ORACLE_INSTANT_CLIENT)return[{title:"Thin mode (default) - direct connection to Oracle database",name:"thin"},{title:"Thick mode - connection via Oracle instant client",name:"thick"}]}};_.initialize=e=>{c=e.platformInfo},e.exports=_},237:(e,n,a)=>{const t=a(831);e.exports={packageName:"dbgate-plugin-oracle",drivers:[t],initialize(e){t.initialize(e)}}},925:e=>{e.exports='\nselect\n -- owner as "schema_name",\n table_name as "pure_name",\n column_name as "column_name",\n nullable as "is_nullable",\n data_type as "data_type",\n data_length as "char_max_length",\n data_precision as "numeric_precision",\n data_scale as "numeric_scale",\n data_default as "default_value"\n FROM all_tab_columns av\n where OWNER=\'$owner\' AND \'tables:\' || TABLE_NAME =OBJECT_ID_CONDITION\norder by column_id\n'},958:e=>{e.exports='\nselect fk.constraint_name as "constraint_name",\n -- fk.owner as "constraint_schema",\n fk.table_name as "pure_name",\n -- fk.owner as "schema_name",\n fk.delete_rule as "update_action",\n fk.delete_rule as "delete_action",\n ref.table_name as "ref_table_name",\n -- ref.owner as "ref_schema_name",\n basecol.column_name as "column_name",\n refcol.column_name as "ref_column_name"\nfrom all_cons_columns refcol, all_cons_columns basecol, all_constraints ref, all_constraints fk\nwhere fk.OWNER = \'$owner\' AND fk.constraint_type = \'R\'\nand ref.owner = fk.r_owner\nand ref.constraint_name = fk.r_constraint_name\nand basecol.owner = fk.owner\nand basecol.constraint_name = fk.constraint_name\nand basecol.table_name = fk.table_name\nand refcol.owner = ref.owner\nand refcol.constraint_name = ref.constraint_name\nand refcol.table_name = ref.table_name\nAND \'tables:\' || fk.table_name =OBJECT_ID_CONDITION\norder by basecol.position\n'},926:(e,n,a)=>{const t=a(925),s=a(382),r=a(916),i=a(958),o=a(864),l=a(124),c=a(701),m=a(332),u=a(474),p=a(377),d=a(171);e.exports={columns:t,tableList:s,primaryKeys:r,foreignKeys:i,views:o,routines:c,parameters:m,matviews:l,indexes:u,triggers:p,uniqueNames:d}},474:e=>{e.exports='\nselect i.table_name as "tableName",\n -- i.table_owner as "schemaName",\n i.index_name as "constraintName",\n i.index_type as "indexType",\n i.uniqueness as "Unique",\n ic.column_name as "columnName",\n ic.descend as "descending"\nfrom all_ind_columns ic, all_indexes i\nwhere INDEX_OWNER = \'$owner\' AND ic.index_owner = i.owner\nand ic.index_name = i.index_name\nand \'tables:\' || i.table_name =OBJECT_ID_CONDITION\norder by i.table_owner,\n i.table_name,\n i.index_name,\n ic.column_position\n'},124:e=>{e.exports="\nSELECT -- owner as schema_name,\n mview_name pure_name,\n container_name,\n '' || trim(\n extractvalue(\n dbms_xmlgen.getxmltype('SELECT query\n FROM all_mviews\n WHERE mview_name=''' ||\n MVIEW_NAME || ''' AND\n owner = ''' ||\n owner || ''''\n ),\n '//text()'\n )) definition\nFROM all_mviews\nwhere OWNER = '$owner' AND 'matviews:' || mview_name=OBJECT_ID_CONDITION\norder by owner, mview_name\n"},332:e=>{e.exports="\nSELECT \n o.OBJECT_NAME AS pure_name,\n PACKAGE_NAME,\n ARGUMENT_NAME AS parameter_name,\n POSITION AS ordinal_position,\n DATA_TYPE AS data_type,\n CHAR_LENGTH AS char_max_length,\n DATA_PRECISION AS numeric_precision,\n DATA_SCALE AS numeric_scale,\n IN_OUT AS parameter_mode\nFROM \n all_objects o\nLEFT JOIN \n all_arguments a\n ON o.object_id = a.object_id\nWHERE \n o.object_type IN ('FUNCTION', 'PROCEDURE')\n AND o.OWNER = '$owner'\nORDER BY \n POSITION;\n"},916:e=>{e.exports='\nselect\n -- pk.owner as "constraint_schema",\n pk.constraint_name as "constraint_name",\n -- pk.owner as "schema_name",\n pk.table_name as "pure_name",\n basecol.column_name as "column_name"\nfrom all_cons_columns basecol,\n all_constraints pk\nwhere constraint_type = \'P\'\nand basecol.owner = pk.owner\nand basecol.constraint_name = pk.constraint_name\nand basecol.table_name = pk.table_name\nand \'tables:\' || basecol.table_name =OBJECT_ID_CONDITION\nand pk.owner = \'$owner\'\norder by basecol.position\n'},701:e=>{e.exports="\nSELECT \n name as \"pure_name\",\n type as \"object_type\",\n LISTAGG(text, '') WITHIN GROUP (ORDER BY line) AS \"source_code\",\n ora_hash(LISTAGG(text, '') WITHIN GROUP (ORDER BY line)) AS \"hash_code\"\nFROM all_source\nWHERE type in ('FUNCTION', 'PROCEDURE') AND OWNER = '$owner'\nGROUP BY name, type\n"},382:e=>{e.exports="\nselect\n -- owner \"schema_name\",\n table_name \"pure_name\"\n from\n all_tables\n where OWNER='$owner' AND 'tables:' || TABLE_NAME =OBJECT_ID_CONDITION\n"},377:e=>{e.exports="\nSELECT\n TRIGGER_TYPE AS \"trigger_timing\",\n TRIGGERING_EVENT AS \"event_type\",\n TRIGGER_BODY AS \"definition\",\n TRIGGER_NAME AS \"trigger_name\",\n TABLE_NAME AS \"table_name\",\n OWNER,\n CASE\n WHEN INSTR(TRIGGER_TYPE, 'ROW') > 0 THEN 'ROW'\n WHEN INSTR(TRIGGER_TYPE, 'STATEMENT') > 0 THEN 'STATEMENT'\n ELSE NULL\n END AS trigger_level\nFROM\n all_triggers\nWHERE\n OWNER='$owner'\n AND 'tables:' || TABLE_NAME =OBJECT_ID_CONDITION\n"},171:e=>{e.exports="\nselect constraint_name as \"constraintName\"\nfrom all_constraints\nwhere owner='$owner' and constraint_type = 'U'\n and 'tables:' || table_name =OBJECT_ID_CONDITION\n"},864:e=>{e.exports='\nselect avv.*\nfrom (select\n view_name as "pure_name",\n text as "create_sql"\n from all_views av\n where owner = \'$owner\' and text is not null\n ) avv\n where \'views:\' || "pure_name" is not null\n'},197:e=>{const{SqlDumper:n,arrayToHexString:a,testEqualTypes:t}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends n{createDatabase(e){this.put(`CREATE USER c##${e}\n IDENTIFIED BY ${e}\n DEFAULT TABLESPACE users\n TEMPORARY TABLESPACE temp\n QUOTA 10M ON users`)}dropDatabase(e){this.put(`DROP USER ${e}`)}beginTransaction(){}columnDefinition(e,n){if(e.autoIncrement)return super.columnType(e.dataType),void this.put(" ^generated ^by ^default ^on ^null ^as ^identity");super.columnDefinition(e,n)}renameColumn(e,n){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,n)}changeColumn(e,n,a){e.columnName!=n.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,n.columnName),e.notNull||this.fillNewNotNullDefaults(n),t(e,n)&&e.notNull==n.notNull||this.putCmd("^alter ^table %f ^modify (%i %s %k)",n,n.columnName,n.dataType,n.notNull?"not null":"null"),e.defaultValue!=n.defaultValue&&(n.defaultValue?.trim()?this.putCmd("^alter ^table %f ^modify (%i ^default %s)",n,n.columnName,n.defaultValue):this.putCmd("^alter ^table %f ^modify (%i ^default ^null)",n,n.columnName))}selectScopeIdentity(e){const n=e.identitySequenceName;n&&this.put("^select %i.CURRVAL FROM DUAL",n)}renameTable(e,n){this.putCmd("^alter ^table %f ^rename ^to %i",e,n)}renameSqlObject(e,n){this.putCmd("^rename %f ^to %i",e,n)}putValue(e,n){"timestamp"==n?.toLowerCase()?this.putRaw(`TO_TIMESTAMP('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):"date"==n?.toLowerCase()?this.putRaw(`TO_DATE('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):super.putValue(e)}}},534:(e,n,a)=>{const{driverBase:t}=global.DBGATE_PACKAGES["dbgate-tools"],s=a(197),{oracleSplitterOptions:r}=a(994),i=["GEOGRAPHY"],o={rangeSelect:!0,limitSelect:!1,offsetFetchRangeSyntax:!0,rowNumberOverPaging:!0,ilike:!1,stringEscapeChar:"'",fallbackDataType:"varchar(250)",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',userDatabaseNamePrefix:"C##",upperCaseAllDbObjectNames:!0,requireStandaloneSelectForScopeIdentity:!0,defaultValueBeforeNullability:!0,createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,renameSqlObject:!0,dropReferencesWhenDropTable:!0,requireFromDual:!0,predefinedDataTypes:["VARCHAR2","NUMBER","DATE","CLOB","BLOB","INTEGER","BFILE","BINARY_DOUBLE","BINARY_FLOAT","CHAR","FLOAT","INTERVAL DAY","INTERVAL YEAR","LONG","LONG RAW","NCHAR","NCLOB","NVARCHAR2","RAW","ROWID","TIMESTAMP","UROWID"],createColumnViewExpression(e,n,a,t){if(n&&i.includes(n.toUpperCase()))return{exprType:"call",func:"ST_AsText",alias:t||e,args:[{exprType:"column",columnName:e,source:a}]}}},l={...t,engine:"oracle@dbgate-plugin-oracle",title:"OracleDB",defaultPort:1521,authTypeLabel:"Driver mode",defaultAuthTypeName:"thin",dialect:o,dumperClass:s,getQuerySplitterOptions:()=>r,readOnlySessions:!0,supportsTransactions:!0,implicitTransactions:!0,databaseUrlPlaceholder:"e.g. localhost:1521/orcl",showConnectionField:(e,n,{config:a})=>"useDatabaseUrl"==e||"authType"==e||("clientLibraryPath"==e?a?.isElectron&&"thick"==n.authType:n.useDatabaseUrl?["databaseUrl","user","password"].includes(e):["user","password","server","port","serviceName"].includes(e)),getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New materialized view",sql:"CREATE MATERIALIZED VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"CREATE PROCEDURE myproc (arg1 INT)\nLANGUAGE SQL\nAS $$\n SELECT * FROM table1;\n$$"},{label:"New function (plpgsql)",sql:"CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT\nAS $$\nBEGIN\n RETURN 1;\nEND\n$$ LANGUAGE plpgsql;"},{label:"New trigger",sql:'\nCREATE OR REPLACE TRIGGER trigger_name\nAFTER INSERT ON "table_name" FOR EACH ROW \nBEGIN\nEND trigger_name;\n'}],dialectByVersion:e=>e?{...o,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3)}:o,showConnectionTab:e=>"sshTunnel"==e,dialectByVersion:e=>e&&e.versionMajor<12?{...o,rangeSelect:!1,offsetFetchRangeSyntax:!1}:o,adaptDataType:e=>"datetime"==e?.toLowerCase()?"timestamp":"text"==e?.toLowerCase()?"clob":e};e.exports=l},825:e=>{"use strict";e.exports=require("lodash")},504:e=>{"use strict";e.exports=require("oracledb")},203:e=>{"use strict";e.exports=require("stream")}},n={},a=function a(t){var s=n[t];if(void 0!==s)return s.exports;var r=n[t]={exports:{}};return e[t](r,r.exports,a),r.exports}(237);module.exports=a})();
package/dist/frontend.js CHANGED
@@ -1 +1 @@
1
- var plugin;(()=>{var e={994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.oracleSplitterOptions=t.redisSplitterOptions=t.noSplitSplitterOptions=t.mongoSplitterOptions=t.sqliteSplitterOptions=t.postgreSplitterOptions=t.mssqlSplitterOptions=t.mysqlSplitterOptions=t.defaultSplitterOptions=void 0,t.defaultSplitterOptions={stringsBegins:["'"],stringsEnds:{"'":"'"},stringEscapes:{"'":"'"},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},t.mysqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`"],stringsEnds:{"'":"'","`":"`"},stringEscapes:{"'":"\\","`":"`"}}),t.mssqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),t.postgreSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.sqliteSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.mongoSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),t.noSplitSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{noSplit:!0}),t.redisSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{splitByLines:!0}),t.oracleSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}})},56:e=>{const{SqlDumper:t,arrayToHexString:n,testEqualTypes:i}=window.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{createDatabase(e){this.put(`CREATE USER c##${e}\n IDENTIFIED BY ${e}\n DEFAULT TABLESPACE users\n TEMPORARY TABLESPACE temp\n QUOTA 10M ON users`)}dropDatabase(e){this.put(`DROP USER ${e}`)}beginTransaction(){}columnDefinition(e,t){if(e.autoIncrement)return super.columnType(e.dataType),void this.put(" ^generated ^by ^default ^on ^null ^as ^identity");super.columnDefinition(e,t)}renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}changeColumn(e,t,n){e.columnName!=t.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t.columnName),e.notNull||this.fillNewNotNullDefaults(t),i(e,t)&&e.notNull==t.notNull||this.putCmd("^alter ^table %f ^modify (%i %s %k)",t,t.columnName,t.dataType,t.notNull?"not null":"null"),e.defaultValue!=t.defaultValue&&(t.defaultValue?.trim()?this.putCmd("^alter ^table %f ^modify (%i ^default %s)",t,t.columnName,t.defaultValue):this.putCmd("^alter ^table %f ^modify (%i ^default ^null)",t,t.columnName))}selectScopeIdentity(e){const t=e.identitySequenceName;t&&this.put("^select %i.CURRVAL FROM DUAL",t)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}renameSqlObject(e,t){this.putCmd("^rename %f ^to %i",e,t)}putValue(e,t){"timestamp"==t?.toLowerCase()?this.putRaw(`TO_TIMESTAMP('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):"date"==t?.toLowerCase()?this.putRaw(`TO_DATE('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):super.putValue(e)}}},831:(e,t,n)=>{const{driverBase:i}=window.DBGATE_PACKAGES["dbgate-tools"],s=n(56),{oracleSplitterOptions:l}=n(994),a=["GEOGRAPHY"],r={rangeSelect:!0,limitSelect:!1,offsetFetchRangeSyntax:!0,rowNumberOverPaging:!0,ilike:!1,stringEscapeChar:"'",fallbackDataType:"varchar(250)",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',userDatabaseNamePrefix:"C##",upperCaseAllDbObjectNames:!0,requireStandaloneSelectForScopeIdentity:!0,defaultValueBeforeNullability:!0,createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,renameSqlObject:!0,dropReferencesWhenDropTable:!0,requireFromDual:!0,predefinedDataTypes:["VARCHAR2","NUMBER","DATE","CLOB","BLOB","INTEGER","BFILE","BINARY_DOUBLE","BINARY_FLOAT","CHAR","FLOAT","INTERVAL DAY","INTERVAL YEAR","LONG","LONG RAW","NCHAR","NCLOB","NVARCHAR2","RAW","ROWID","TIMESTAMP","UROWID"],createColumnViewExpression(e,t,n,i){if(t&&a.includes(t.toUpperCase()))return{exprType:"call",func:"ST_AsText",alias:i||e,args:[{exprType:"column",columnName:e,source:n}]}}},o={...i,engine:"oracle@dbgate-plugin-oracle",title:"OracleDB",defaultPort:1521,authTypeLabel:"Driver mode",defaultAuthTypeName:"thin",dialect:r,dumperClass:s,getQuerySplitterOptions:()=>l,readOnlySessions:!0,supportsTransactions:!0,implicitTransactions:!0,databaseUrlPlaceholder:"e.g. localhost:1521/orcl",showConnectionField:(e,t,{config:n})=>"useDatabaseUrl"==e||"authType"==e||("clientLibraryPath"==e?n?.isElectron&&"thick"==t.authType:t.useDatabaseUrl?["databaseUrl","user","password"].includes(e):["user","password","server","port","serviceName"].includes(e)),getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New materialized view",sql:"CREATE MATERIALIZED VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"CREATE PROCEDURE myproc (arg1 INT)\nLANGUAGE SQL\nAS $$\n SELECT * FROM table1;\n$$"},{label:"New function (plpgsql)",sql:"CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT\nAS $$\nBEGIN\n RETURN 1;\nEND\n$$ LANGUAGE plpgsql;"},{label:"New trigger",sql:'\nCREATE OR REPLACE TRIGGER trigger_name\nAFTER INSERT ON "table_name" FOR EACH ROW \nBEGIN\nEND trigger_name;\n'}],dialectByVersion:e=>e?{...r,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3)}:r,showConnectionTab:e=>"sshTunnel"==e,dialectByVersion:e=>e&&e.versionMajor<12?{...r,rangeSelect:!1,offsetFetchRangeSyntax:!1}:r,adaptDataType:e=>"datetime"==e?.toLowerCase()?"timestamp":"text"==e?.toLowerCase()?"clob":e};e.exports=o}},t={};function n(i){var s=t[i];if(void 0!==s)return s.exports;var l=t[i]={exports:{}};return e[i](l,l.exports,n),l.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{default:()=>t});var e=n(831);const t={packageName:"dbgate-plugin-oracle",drivers:[n.n(e)()]}})(),plugin=i})();
1
+ var plugin;(()=>{var e={994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.oracleSplitterOptions=t.redisSplitterOptions=t.noSplitSplitterOptions=t.mongoSplitterOptions=t.sqliteSplitterOptions=t.postgreSplitterOptions=t.mssqlSplitterOptions=t.mysqlSplitterOptions=t.defaultSplitterOptions=void 0,t.defaultSplitterOptions={stringsBegins:["'"],stringsEnds:{"'":"'"},stringEscapes:{"'":"'"},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},t.mysqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),t.mssqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),t.postgreSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.sqliteSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.mongoSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),t.noSplitSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{noSplit:!0}),t.redisSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{splitByLines:!0}),t.oracleSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}})},56:e=>{const{SqlDumper:t,arrayToHexString:n,testEqualTypes:i}=window.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{createDatabase(e){this.put(`CREATE USER c##${e}\n IDENTIFIED BY ${e}\n DEFAULT TABLESPACE users\n TEMPORARY TABLESPACE temp\n QUOTA 10M ON users`)}dropDatabase(e){this.put(`DROP USER ${e}`)}beginTransaction(){}columnDefinition(e,t){if(e.autoIncrement)return super.columnType(e.dataType),void this.put(" ^generated ^by ^default ^on ^null ^as ^identity");super.columnDefinition(e,t)}renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}changeColumn(e,t,n){e.columnName!=t.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t.columnName),e.notNull||this.fillNewNotNullDefaults(t),i(e,t)&&e.notNull==t.notNull||this.putCmd("^alter ^table %f ^modify (%i %s %k)",t,t.columnName,t.dataType,t.notNull?"not null":"null"),e.defaultValue!=t.defaultValue&&(t.defaultValue?.trim()?this.putCmd("^alter ^table %f ^modify (%i ^default %s)",t,t.columnName,t.defaultValue):this.putCmd("^alter ^table %f ^modify (%i ^default ^null)",t,t.columnName))}selectScopeIdentity(e){const t=e.identitySequenceName;t&&this.put("^select %i.CURRVAL FROM DUAL",t)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}renameSqlObject(e,t){this.putCmd("^rename %f ^to %i",e,t)}putValue(e,t){"timestamp"==t?.toLowerCase()?this.putRaw(`TO_TIMESTAMP('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):"date"==t?.toLowerCase()?this.putRaw(`TO_DATE('${e}', 'YYYY-MM-DD"T"HH24:MI:SS')`):super.putValue(e)}}},831:(e,t,n)=>{const{driverBase:i}=window.DBGATE_PACKAGES["dbgate-tools"],s=n(56),{oracleSplitterOptions:l}=n(994),a=["GEOGRAPHY"],r={rangeSelect:!0,limitSelect:!1,offsetFetchRangeSyntax:!0,rowNumberOverPaging:!0,ilike:!1,stringEscapeChar:"'",fallbackDataType:"varchar(250)",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',userDatabaseNamePrefix:"C##",upperCaseAllDbObjectNames:!0,requireStandaloneSelectForScopeIdentity:!0,defaultValueBeforeNullability:!0,createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,renameSqlObject:!0,dropReferencesWhenDropTable:!0,requireFromDual:!0,predefinedDataTypes:["VARCHAR2","NUMBER","DATE","CLOB","BLOB","INTEGER","BFILE","BINARY_DOUBLE","BINARY_FLOAT","CHAR","FLOAT","INTERVAL DAY","INTERVAL YEAR","LONG","LONG RAW","NCHAR","NCLOB","NVARCHAR2","RAW","ROWID","TIMESTAMP","UROWID"],createColumnViewExpression(e,t,n,i){if(t&&a.includes(t.toUpperCase()))return{exprType:"call",func:"ST_AsText",alias:i||e,args:[{exprType:"column",columnName:e,source:n}]}}},o={...i,engine:"oracle@dbgate-plugin-oracle",title:"OracleDB",defaultPort:1521,authTypeLabel:"Driver mode",defaultAuthTypeName:"thin",dialect:r,dumperClass:s,getQuerySplitterOptions:()=>l,readOnlySessions:!0,supportsTransactions:!0,implicitTransactions:!0,databaseUrlPlaceholder:"e.g. localhost:1521/orcl",showConnectionField:(e,t,{config:n})=>"useDatabaseUrl"==e||"authType"==e||("clientLibraryPath"==e?n?.isElectron&&"thick"==t.authType:t.useDatabaseUrl?["databaseUrl","user","password"].includes(e):["user","password","server","port","serviceName"].includes(e)),getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New materialized view",sql:"CREATE MATERIALIZED VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"CREATE PROCEDURE myproc (arg1 INT)\nLANGUAGE SQL\nAS $$\n SELECT * FROM table1;\n$$"},{label:"New function (plpgsql)",sql:"CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT\nAS $$\nBEGIN\n RETURN 1;\nEND\n$$ LANGUAGE plpgsql;"},{label:"New trigger",sql:'\nCREATE OR REPLACE TRIGGER trigger_name\nAFTER INSERT ON "table_name" FOR EACH ROW \nBEGIN\nEND trigger_name;\n'}],dialectByVersion:e=>e?{...r,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3)}:r,showConnectionTab:e=>"sshTunnel"==e,dialectByVersion:e=>e&&e.versionMajor<12?{...r,rangeSelect:!1,offsetFetchRangeSyntax:!1}:r,adaptDataType:e=>"datetime"==e?.toLowerCase()?"timestamp":"text"==e?.toLowerCase()?"clob":e};e.exports=o}},t={};function n(i){var s=t[i];if(void 0!==s)return s.exports;var l=t[i]={exports:{}};return e[i](l,l.exports,n),l.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{default:()=>t});var e=n(831);const t={packageName:"dbgate-plugin-oracle",drivers:[n.n(e)()]}})(),plugin=i})();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-plugin-oracle",
3
3
  "main": "dist/backend.js",
4
- "version": "6.4.1",
4
+ "version": "6.4.3-alpha.1",
5
5
  "license": "GPL-3.0",
6
6
  "description": "Oracle connector plugin for DbGate",
7
7
  "homepage": "https://dbgate.org",
@@ -35,8 +35,8 @@
35
35
  "webpack-cli": "^5.1.4"
36
36
  },
37
37
  "dependencies": {
38
- "dbgate-query-splitter": "^4.11.4",
39
- "dbgate-tools": "^6.4.1",
38
+ "dbgate-query-splitter": "^4.11.5",
39
+ "dbgate-tools": "^6.4.3-alpha.1",
40
40
  "lodash": "^4.17.21"
41
41
  },
42
42
  "optionalDependencies": {