dbgate-plugin-postgres 6.2.0 → 6.3.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/dist/backend.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={994:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.oracleSplitterOptions=a.redisSplitterOptions=a.noSplitSplitterOptions=a.mongoSplitterOptions=a.sqliteSplitterOptions=a.postgreSplitterOptions=a.mssqlSplitterOptions=a.mysqlSplitterOptions=a.defaultSplitterOptions=void 0,a.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,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},a.mysqlSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`"],stringsEnds:{"'":"'","`":"`"},stringEscapes:{"'":"\\","`":"`"}}),a.mssqlSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),a.postgreSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),a.sqliteSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),a.mongoSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),a.noSplitSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{noSplit:!0}),a.redisSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{splitByLines:!0}),a.oracleSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}})},688:(e,a,n)=>{const t=n(825),s=n(926),{DatabaseAnalyser:r,isTypeString:i,isTypeNumeric:o,isCompositeDbName:m,splitCompositeDbName:l}=global.DBGATE_PACKAGES["dbgate-tools"];function c(e){return"character varying"==e?"varchar":"timestamp without time zone"==e?"timestamp":e}function p({is_nullable:e,column_name:a,data_type:n,char_max_length:t,numeric_precision:s,numeric_ccale:r,default_value:m},l=void 0,p=void 0,u=void 0){const _=c(n);let d=_;t&&i(_)&&(d=`${_}(${t})`),s&&r&&o(_)&&(d=`${_}(${s},${r})`);const h=!(!m||!m.startsWith("nextval("));return l&&p&&p.rows.find((e=>e.schema_name==l.schemaName&&e.pure_name==l.pureName&&e.column_name==a))&&(d="geometry"),l&&u&&u.rows.find((e=>e.schema_name==l.schemaName&&e.pure_name==l.pureName&&e.column_name==a))&&(d="geography"),{columnName:a,dataType:d,notNull:!e||"NO"==e||"no"==e,defaultValue:h?void 0:m,autoIncrement:h}}function u(e=[]){return e?.length?e.map((e=>{const a=e.parameterMode?`${e.parameterMode} `:"",n=e.dataType?` ${e.dataType.toUpperCase()}`:"";return`${a}${e.parameterName??""}${n}`})).join(", "):""}e.exports=class extends r{constructor(e,a,n){super(e,a,n)}createQuery(e,a,n={}){return super.createQuery(s[e],a,{...n,$typeAggFunc:this.driver.dialect.stringAgg?"string_agg":"max",$typeAggParam:this.driver.dialect.stringAgg?", '|'":"",$md5Function:this.dialect?.isFipsComplianceOn?"LENGTH":"MD5"})}async _computeSingleObjectId(){const{typeField:e,schemaName:a,pureName:n}=this.singleObjectFilter;this.singleObjectId=`${e}:${a||"public"}.${n}`}async _runAnalysis(){this.feedback({analysingMessage:"Loading tables"});const e=await this.analyserQuery(this.driver.dialect.stringAgg?"tableModifications":"tableList",["tables"]);this.feedback({analysingMessage:"Loading columns"});const a=await this.analyserQuery("columns",["tables","views"]);this.feedback({analysingMessage:"Loading primary keys"});const n=await this.analyserQuery("primaryKeys",["tables"]);let s=null;this.feedback({analysingMessage:"Loading foreign key constraints"}),this.feedback({analysingMessage:"Loading foreign key refs"});const i=await this.analyserQuery("foreignKeys",["tables"]);this.feedback({analysingMessage:"Loading foreign key columns"});const o=await this.analyserQuery("fk_keyColumnUsage",["tables"]),m=[];for(const e of i.rows){const a=t.sortBy(o.rows.filter((a=>a.table_name==e.table_name&&a.constraint_name==e.constraint_name&&a.table_schema==e.table_schema)),"ordinal_position"),n=t.sortBy(o.rows.filter((a=>a.table_name==e.ref_table_name&&a.constraint_name==e.unique_constraint_name&&a.table_schema==e.ref_table_schema)),"ordinal_position");if(a.length==n.length)for(let t=0;t<a.length;t++){const s=a[t],r=n[t];m.push({...e,pure_name:e.table_name,schema_name:e.table_schema,ref_table_name:e.ref_table_name,ref_schema_name:e.ref_table_schema,column_name:s.column_name,ref_column_name:r.column_name})}}s={rows:m},this.feedback({analysingMessage:"Loading views"});const l=await this.analyserQuery("views",["views"]);this.feedback({analysingMessage:"Loading materialized views"});const _=this.driver.dialect.materializedViews?await this.analyserQuery("matviews",["matviews"]):null;this.feedback({analysingMessage:"Loading materialized view columns"});const d=this.driver.dialect.materializedViews?await this.analyserQuery("matviewColumns",["matviews"]):null;this.feedback({analysingMessage:"Loading routines"});const h=await this.analyserQuery("routines",["procedures","functions"]);this.feedback({analysingMessage:"Loading routine parameters"});const g=await this.analyserQuery("proceduresParameters");this.feedback({analysingMessage:"Loading indexes"});const b=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexes",["tables"]);this.feedback({analysingMessage:"Loading index columns"});const N=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexcols",["tables"]);this.feedback({analysingMessage:"Loading unique names"});const f=await this.analyserQuery("uniqueNames",["tables"]);let y={rows:[]};l.rows.find((e=>"geometry_columns"==e.pure_name&&"public"==e.schema_name))&&(this.feedback({analysingMessage:"Loading geometry columns"}),y=await this.analyserQuery("geometryColumns",["tables"]));let E={rows:[]};l.rows.find((e=>"geography_columns"==e.pure_name&&"public"==e.schema_name))&&(this.feedback({analysingMessage:"Loading geography columns"}),E=await this.analyserQuery("geographyColumns",["tables"])),this.feedback({analysingMessage:"Loading triggers"});const O=await this.analyserQuery("triggers");this.feedback({analysingMessage:"Finalizing DB structure"});const C=s.rows.map((e=>({pureName:e.pure_name,schemaName:e.schema_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,refSchemaName:e.ref_schema_name}))),T=n.rows.map((e=>({pureName:e.pure_name,schemaName:e.schema_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name}))),w=g.rows.filter((e=>"PROCEDURE"==e.routine_type)).map((e=>({pureName:e.pure_name,parameterName:e.parameter_name,dataType:c(e.data_type),parameterMode:e.parameter_mode,schemaName:e.schema_name}))).reduce(((e,a)=>(e[`${a.schemaName}.${a.pureName}`]||(e[`${a.schemaName}.${a.pureName}`]=[]),e[`${a.schemaName}.${a.pureName}`].push(a),e)),{}),S=g.rows.filter((e=>"FUNCTION"==e.routine_type)).map((e=>({pureName:e.pure_name,parameterName:e.parameter_name,dataType:c(e.data_type),parameterMode:e.parameter_mode,schemaName:e.schema_name}))).reduce(((e,a)=>(e[`${a.schemaName}.${a.pureName}`]||(e[`${a.schemaName}.${a.pureName}`]=[]),e[`${a.schemaName}.${a.pureName}`].push(a),e)),{}),I={tables:e.rows.map((e=>{const n={pureName:e.pure_name,schemaName:e.schema_name,objectId:`tables:${e.schema_name}.${e.pure_name}`,contentHash:e.hash_code_columns?`${e.hash_code_columns}-${e.hash_code_constraints}`:null};return{...n,columns:a.rows.filter((a=>a.pure_name==e.pure_name&&a.schema_name==e.schema_name)).map((e=>p(e,n,y,E))),primaryKey:r.extractPrimaryKeys(n,T),foreignKeys:r.extractForeignKeys(n,C),indexes:b.rows.filter((a=>a.table_name==e.pure_name&&a.schema_name==e.schema_name&&!f.rows.find((e=>e.constraint_name==a.index_name)))).map((e=>{const a=e.indoption.split(" ");return{constraintName:e.index_name,isUnique:e.is_unique,columns:t.compact(e.indkey.split(" ").map((a=>N.rows.find((n=>n.oid==e.oid&&n.attnum==a)))).filter((e=>null!=e)).map(((e,n)=>({columnName:e.column_name,isDescending:parseInt(a[n])>0}))))}})),uniques:b.rows.filter((a=>a.table_name==e.pure_name&&a.schema_name==e.schema_name&&f.rows.find((e=>e.constraint_name==a.index_name)))).map((e=>({constraintName:e.index_name,columns:t.compact(e.indkey.split(" ").map((a=>N.rows.find((n=>n.oid==e.oid&&n.attnum==a)))).filter((e=>null!=e)).map((e=>({columnName:e.column_name}))))})))}})),views:l.rows.map((e=>({objectId:`views:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code,createSql:`CREATE VIEW "${e.schema_name}"."${e.pure_name}"\nAS\n${e.create_sql}`,columns:a.rows.filter((a=>a.pure_name==e.pure_name&&a.schema_name==e.schema_name)).map((e=>p(e)))}))),matviews:_?_.rows.map((e=>({objectId:`matviews:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code,createSql:`CREATE MATERIALIZED VIEW "${e.schema_name}"."${e.pure_name}"\nAS\n${e.definition}`,columns:d.rows.filter((a=>a.pure_name==e.pure_name&&a.schema_name==e.schema_name)).map((e=>p(e)))}))):void 0,procedures:h.rows.filter((e=>"PROCEDURE"==e.object_type)).map((e=>({objectId:`procedures:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,createSql:`CREATE PROCEDURE "${e.schema_name}"."${e.pure_name}"(${u(w[`${e.schema_name}.${e.pure_name}`])}) LANGUAGE ${e.language}\nAS\n$$\n${e.definition}\n$$`,contentHash:e.hash_code,parameters:w[`${e.schema_name}.${e.pure_name}`]}))),functions:h.rows.filter((e=>"FUNCTION"==e.object_type)).map((e=>({objectId:`functions:${e.schema_name}.${e.pure_name}`,createSql:`CREATE FUNCTION "${e.schema_name}"."${e.pure_name}"(${u(S[`${e.schema_name}.${e.pure_name}`])}) RETURNS ${e.data_type.toUpperCase()} LANGUAGE ${e.language}\nAS\n$$\n${e.definition}\n$$`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code,parameters:S[`${e.schema_name}.${e.pure_name}`],returnType:e.data_type}))),triggers:O.rows.map((e=>({pureName:e.trigger_name,trigerName:e.trigger_name,functionName:e.function_name,triggerTiming:e.trigger_timing,triggerLevel:e.trigger_level,eventType:e.event_type,schemaName:e.schema_name,tableName:e.table_name,createSql:e.definition,contentHash:`triggers:${e.trigger_id}`,objectId:`triggers:${e.trigger_id}`})))};return this.feedback({analysingMessage:null}),this.logger.debug({tables:I.tables?.length,columns:t.sum(I.tables?.map((e=>e.columns?.length))),primaryKeys:I.tables?.filter((e=>e.primaryKey))?.length,foreignKeys:t.sum(I.tables?.map((e=>e.foreignKeys?.length))),indexes:t.sum(I.tables?.map((e=>e.indexes?.length))),uniques:t.sum(I.tables?.map((e=>e.uniques?.length))),views:I.views?.length,matviews:I.matviews?.length,procedures:I.procedures?.length,functions:I.functions?.length},"Database structured finalized"),I}async _getFastSnapshot(){const e=this.driver.dialect.stringAgg?await this.analyserQuery("tableModifications"):null,a=await this.analyserQuery("viewModifications"),n=this.driver.dialect.materializedViews?await this.analyserQuery("matviewModifications"):null,t=await this.analyserQuery("routineModifications");return{tables:e?e.rows.map((e=>({objectId:`tables:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:`${e.hash_code_columns}-${e.hash_code_constraints}`}))):null,views:a.rows.map((e=>({objectId:`views:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code}))),matviews:n?n.rows.map((e=>({objectId:`matviews:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code}))):void 0,procedures:t.rows.filter((e=>"PROCEDURE"==e.object_type)).map((e=>({objectId:`procedures:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code}))),functions:t.rows.filter((e=>"FUNCTION"==e.object_type)).map((e=>({objectId:`functions:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code})))}}getDefaultSchemaNameCondition(){return"not in ('pg_catalog', 'pg_toast', 'information_schema')"}}},378:(e,a,n)=>{const t=n(825),s=n(203),r=n(293),i=n(688),o=n(158),m=n(449),l=n(269),{getLogger:c,createBulkInsertStreamBase:p,makeUniqueColumnNames:u,extractDbNameFromComposite:_,extractErrorLogData:d}=global.DBGATE_PACKAGES["dbgate-tools"];let h;const g=c("postreDriver");function b(e){try{const a=Buffer.from(e,"hex");return o.Geometry.parse(a).toWkt()}catch(a){return e}}function N(e,a){if(!a?.length)return e;for(const n of a){const{columnName:a,dataTypeName:t}=n;"geography"==t&&(e[a]=b(e[a]))}return e}function f(e,a){if(!e||!e.fields)return[];const{typeIdToName:n={}}=a,t=e.fields.map((e=>({columnName:e.name,dataTypeId:e.dataTypeID,dataTypeName:n[e.dataTypeID]})));return u(t),t}function y(e,a){return t.zipObject(a.map((e=>e.columnName)),e)}m.types.setTypeParser(1082,"text",(e=>e)),m.types.setTypeParser(1114,"text",(e=>e)),m.types.setTypeParser(1184,"text",(e=>e));const E=r.map((e=>({...e,analyserClass:i,async connect(a){const{engine:n,server:s,port:r,user:i,password:o,database:l,databaseUrl:c,useDatabaseUrl:p,ssl:u,isReadOnly:d,authType:g,socketPath:b}=a;let N=null,f=null;if("awsIam"==g&&(f=await h.getAwsIamToken(a)),"redshift@dbgate-plugin-postgres"==n){let e=c;e&&e.startsWith("jdbc:redshift://")&&(e=e.substring(16)),e=i&&o?`postgres://${i}:${o}@${e}`:i?`postgres://${i}@${e}`:`postgres://${e}`,N={connectionString:e}}else N=p?{connectionString:c,application_name:"DbGate"}:{host:"socket"==g?b||e.defaultSocketPath:s,port:"socket"==g?null:r,user:i,password:f||o,database:_(l)||"postgres",ssl:"awsIam"==g?u||{rejectUnauthorized:!1}:u,application_name:"DbGate"};const y=new m.Client(N);await y.connect();const E={client:y,database:l},O=await this.query(E,"SELECT oid, typname FROM pg_type WHERE typname in ('geography')"),C=t.fromPairs(O.rows.map((e=>[e.oid,e.typname])));return E.typeIdToName=C,d&&await this.query(E,"SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY"),E},close:async e=>e.client.end(),async query(e,a){if(null==a)return{rows:[],columns:[]};const n=await e.client.query({text:a,rowMode:"array"}),t=f(n,e);return{rows:(n.rows||[]).map((e=>y(e,t))),columns:t}},stream(e,a,n){const s=new m.Query({text:a,rowMode:"array"});let r=!1,i=null;s.on("row",(a=>{if(r||(columns=f(s._result,e),columns&&columns.length>0&&n.recordset(columns),r=!0),!i){const a=Object.values(e.typeIdToName??{});i=columns.filter((e=>a.includes(e.dataTypeName)))}const t=N(y(a,columns),i);n.row(t)})),s.on("end",(()=>{const{command:a,rowCount:i}=s._result||{};"SELECT"!=a&&t.isNumber(i)&&n.info({message:`${i} rows affected`,time:new Date,severity:"info"}),r||(columns=f(s._result,e),columns&&columns.length>0&&n.recordset(columns),r=!0),n.done()})),s.on("error",(e=>{g.error(d(e),"Stream error");const{message:t,position:s,procName:r}=e;let i=null;s&&(i=a.substring(0,parseInt(s)).replace(/[^\n]/g,"").length),n.info({message:t,line:i,procedure:r,time:new Date,severity:"error"}),n.done()})),e.client.query(s)},async getVersion(e){const{rows:a}=await this.query(e,"SELECT version()"),{version:n}=a[0];let t=!1;try{await this.query(e,"SELECT MD5('test')")}catch(e){t=!0}const s=n.toLowerCase().includes("cockroachdb"),r=n.toLowerCase().includes("redshift"),i=!s&&!r,o=n.match(/([\d\.]+)/);let m=null,l=null,c=null;if(o){s&&(m=`CockroachDB ${o[1]}`),r&&(m=`Redshift ${o[1]}`),i&&(m=`PostgreSQL ${o[1]}`);const e=o[1].split(".");e[0]&&(l=parseInt(e[0])),e[1]&&(c=parseInt(e[1]))}return{version:n,versionText:m,isPostgres:i,isCockroach:s,isRedshift:r,versionMajor:l,versionMinor:c,isFipsComplianceOn:t}},async readQuery(e,a,n){const t=new m.Query({text:a,rowMode:"array"});let r=!1,i=null,o=null;const l=new s.PassThrough({objectMode:!0,highWaterMark:100});return t.on("row",(a=>{if(r||(i=f(t._result,e),l.write({__isStreamHeader:!0,...n||{columns:i}}),r=!0),!o){const a=Object.values(e.typeIdToName??{});o=i.filter((e=>a.includes(e.dataTypeName)))}const s=N(y(a,i),o);l.write(s)})),t.on("end",(()=>{r||(i=f(t._result,e),l.write({__isStreamHeader:!0,...n||{columns:i}}),r=!0),l.end()})),t.on("error",(e=>{console.error(e),l.end()})),e.client.query(t),l},async writeTable(e,a,n){return p(this,s,e,a,n)},async listDatabases(e){const{rows:a}=await this.query(e,"SELECT datname AS name FROM pg_database WHERE datistemplate = false");return a},getAuthTypes(){const e=[{title:"Host and port",name:"hostPort"},{title:"Socket",name:"socket"}];return h.supportsAwsIam()&&e.push({title:"AWS IAM",name:"awsIam"}),e},async listSchemas(e){const a=await this.query(e,'select oid as "object_id", nspname as "schema_name" from pg_catalog.pg_namespace'),n=await this.query(e,"SELECT current_schema"),t=n.rows[0]?.current_schema?.trim();return g.debug(`Loaded ${a.rows.length} postgres schemas`),a.rows.map((e=>({schemaName:e.schema_name,objectId:e.object_id,isDefault:e.schema_name==t})))},writeQueryFromStream:(e,a)=>e.client.query(l.from(a))})));E.initialize=e=>{h=e.authProxy},e.exports=E},237:(e,a,n)=>{const t=n(378);e.exports={packageName:"dbgate-plugin-postgres",drivers:t,initialize(e){t.initialize(e)}}},925:e=>{e.exports='\nselect \n\ttable_schema as "schema_name", \n\ttable_name as "pure_name", \n\tcolumn_name as "column_name",\n\tis_nullable as "is_nullable",\n\tdata_type as "data_type",\n\tcharacter_maximum_length as "char_max_length",\n\tnumeric_precision as "numeric_precision",\n\tnumeric_scale as "numeric_scale",\n\tcolumn_default as "default_value"\nfrom information_schema.columns\nwhere \n\t\ttable_schema !~ \'^_timescaledb_\' \n\t\tand (\n\t\t\t(\'tables:\' || table_schema || \'.\' || table_name) =OBJECT_ID_CONDITION\n\t\t\tor\n\t\t\t(\'views:\' || table_schema || \'.\' || table_name) =OBJECT_ID_CONDITION\n\t\t)\n\t\tand table_schema =SCHEMA_NAME_CONDITION\norder by ordinal_position\n'},264:e=>{e.exports="\nselect \n\tbasecol.constraint_name,\n\tbasecol.constraint_schema,\n\tbasecol.column_name as \"column_name\",\n\tbasecol.table_schema,\n\tbasecol.table_name,\n\tbasecol.ordinal_position\nfrom information_schema.key_column_usage basecol\nwhere ('tables:' || basecol.table_schema || '.' || basecol.table_name) =OBJECT_ID_CONDITION and basecol.table_schema =SCHEMA_NAME_CONDITION\n"},958:e=>{e.exports="\nSELECT \n nsp.nspname AS table_schema,\n rel.relname AS table_name,\n con.conname AS constraint_name,\n nsp2.nspname AS ref_table_schema,\n rel2.relname AS ref_table_name,\n conpk.conname AS unique_constraint_name\nFROM pg_constraint con\nJOIN pg_class rel ON rel.oid = con.conrelid\nJOIN pg_namespace nsp ON nsp.oid = rel.relnamespace\nJOIN pg_class rel2 ON rel2.oid = con.confrelid\nJOIN pg_namespace nsp2 ON nsp2.oid = rel2.relnamespace\nJOIN pg_constraint conpk \n ON conpk.conrelid = con.confrelid \n AND conpk.conkey = con.confkey\n AND conpk.contype IN ('p','u') -- 'p' = primary key, 'u' = unique constraint\nWHERE con.contype = 'f' AND ('tables:' || nsp.nspname || '.' || rel.relname) =OBJECT_ID_CONDITION AND nsp.nspname =SCHEMA_NAME_CONDITION\n;\n"},477:e=>{e.exports='\nselect \n\tf_table_schema as "schema_name", \n\tf_table_name as "pure_name", \n\tf_geography_column as "column_name"\nfrom public.geography_columns\nwhere (\'tables:\' || f_table_schema || \'.\' || f_table_name) =OBJECT_ID_CONDITION and f_table_schema =SCHEMA_NAME_CONDITION\n'},981:e=>{e.exports='\nselect \n\tf_table_schema as "schema_name", \n\tf_table_name as "pure_name", \n\tf_geometry_column as "column_name"\nfrom public.geometry_columns\nwhere (\'tables:\' || f_table_schema || \'.\' || f_table_name) =OBJECT_ID_CONDITION and f_table_schema =SCHEMA_NAME_CONDITION\n'},926:(e,a,n)=>{const t=n(925),s=n(697),r=n(382),i=n(432),o=n(748),m=n(916),l=n(864),c=n(124),p=n(701),u=n(389),_=n(422),d=n(474),h=n(689),g=n(171),b=n(981),N=n(477),f=n(754),y=n(958),E=n(377),O=n(264);e.exports={columns:t,tableModifications:s,tableList:r,viewModifications:i,primaryKeys:m,fk_keyColumnUsage:O,foreignKeys:y,views:l,routines:p,routineModifications:u,matviews:c,matviewModifications:o,matviewColumns:_,indexes:d,indexcols:h,uniqueNames:g,geometryColumns:b,geographyColumns:N,proceduresParameters:f,triggers:E}},689:e=>{e.exports="\n select\n a.attname as \"column_name\",\n a.attnum as \"attnum\",\n a.attrelid as \"oid\"\n from\n pg_class t,\n pg_class i,\n pg_attribute a,\n pg_index ix,\n pg_namespace c\n where\n t.oid = ix.indrelid\n and a.attnum = ANY(ix.indkey)\n and a.attrelid = t.oid\n and i.oid = ix.indexrelid\n and t.relkind = 'r'\n and ix.indisprimary = false\n and t.relnamespace = c.oid\n and c.nspname != 'pg_catalog'\n and ('tables:' || c.nspname || '.' || t.relname) =OBJECT_ID_CONDITION\n and c.nspname =SCHEMA_NAME_CONDITION\n order by\n t.relname\n"},474:e=>{e.exports='\n select\n t.relname as "table_name",\n c.nspname as "schema_name",\n i.relname as "index_name",\n ix.indisprimary as "is_primary",\n ix.indisunique as "is_unique",\n ix.indkey as "indkey",\n ix.indoption as "indoption",\n t.oid as "oid"\n from\n pg_class t,\n pg_class i,\n pg_index ix,\n pg_namespace c\n where\n t.oid = ix.indrelid\n and i.oid = ix.indexrelid\n and t.relkind = \'r\'\n and ix.indisprimary = false\n and t.relnamespace = c.oid\n and c.nspname != \'pg_catalog\'\n and (\'tables:\' || c.nspname || \'.\' || t.relname) =OBJECT_ID_CONDITION\n and c.nspname =SCHEMA_NAME_CONDITION\n order by\n t.relname\n'},422:e=>{e.exports='\nSELECT pg_namespace.nspname AS "schema_name"\n , pg_class.relname AS "pure_name"\n , pg_attribute.attname AS "column_name"\n , pg_catalog.format_type(pg_attribute.atttypid, pg_attribute.atttypmod) AS "data_type"\nFROM pg_catalog.pg_class\n INNER JOIN pg_catalog.pg_namespace\n ON pg_class.relnamespace = pg_namespace.oid\n INNER JOIN pg_catalog.pg_attribute\n ON pg_class.oid = pg_attribute.attrelid\n-- Keeps only materialized views, and non-db/catalog/index columns \nWHERE pg_class.relkind = \'m\'\n AND pg_attribute.attnum >= 1\n AND (\'matviews:\' || pg_namespace.nspname || \'.\' || pg_class.relname) =OBJECT_ID_CONDITION\n AND pg_namespace.nspname =SCHEMA_NAME_CONDITION\n\nORDER BY pg_attribute.attnum\n'},748:e=>{e.exports='\nselect \n matviewname as "pure_name",\n schemaname as "schema_name",\n $md5Function(definition) as "hash_code"\nfrom\n pg_catalog.pg_matviews WHERE schemaname NOT LIKE \'pg_%\' AND schemaname =SCHEMA_NAME_CONDITION\n'},124:e=>{e.exports='\nselect \n matviewname as "pure_name",\n schemaname as "schema_name",\n definition as "definition",\n $md5Function(definition) as "hash_code"\nfrom\n pg_catalog.pg_matviews WHERE schemaname NOT LIKE \'pg_%\' \n and (\'matviews:\' || schemaname || \'.\' || matviewname) =OBJECT_ID_CONDITION\n and schemaname =SCHEMA_NAME_CONDITION\n'},916:e=>{e.exports='\nselect \n\ttable_constraints.constraint_schema as "constraint_schema",\n\ttable_constraints.constraint_name as "constraint_name",\n\ttable_constraints.table_schema as "schema_name",\n\ttable_constraints.table_name as "pure_name",\n\tkey_column_usage.column_name as "column_name"\nfrom information_schema.table_constraints\ninner join information_schema.key_column_usage on table_constraints.table_name = key_column_usage.table_name and table_constraints.constraint_name = key_column_usage.constraint_name\n and table_constraints.table_schema = key_column_usage.table_schema\nwhere \n\t\ttable_constraints.table_schema !~ \'^_timescaledb_\' \n\t\tand table_constraints.constraint_type = \'PRIMARY KEY\'\n\t\tand (\'tables:\' || table_constraints.table_schema || \'.\' || table_constraints.table_name) =OBJECT_ID_CONDITION\n\t\tand table_constraints.table_schema =SCHEMA_NAME_CONDITION\norder by key_column_usage.ordinal_position\n'},754:e=>{e.exports="\nSELECT \n proc.specific_schema AS schema_name,\n proc.routine_name AS pure_name,\n proc.routine_type as routine_type,\n args.parameter_name AS parameter_name,\n args.parameter_mode,\n args.data_type AS data_type,\n args.ordinal_position AS parameter_index,\n args.parameter_mode AS parameter_mode\nFROM \n information_schema.routines proc \nLEFT JOIN \n information_schema.parameters args\n ON proc.specific_schema = args.specific_schema\n AND proc.specific_name = args.specific_name\nWHERE \n proc.specific_schema NOT IN ('pg_catalog', 'information_schema') -- Exclude system schemas\n AND args.parameter_name IS NOT NULL\n AND proc.routine_type IN ('PROCEDURE', 'FUNCTION') -- Filter for procedures\n AND proc.specific_schema !~ '^_timescaledb_' \n AND proc.specific_schema =SCHEMA_NAME_CONDITION\n AND (\n (routine_type = 'PROCEDURE' AND ('procedures:' || proc.specific_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n OR\n (routine_type = 'FUNCTION' AND ('functions:' || proc.specific_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n )\nORDER BY \n schema_name,\n args.ordinal_position;\n"},389:e=>{e.exports='\nselect \n routine_name as "pure_name",\n routine_schema as "schema_name",\n $md5Function(routine_definition) as "hash_code",\n routine_type as "object_type"\nfrom\n information_schema.routines where routine_schema !~ \'^_timescaledb_\' \n and routine_type in (\'PROCEDURE\', \'FUNCTION\') and routine_schema =SCHEMA_NAME_CONDITION\n'},701:e=>{e.exports="\nselect \n routine_name as \"pure_name\",\n routine_schema as \"schema_name\",\n max(routine_definition) as \"definition\",\n max($md5Function(routine_definition)) as \"hash_code\",\n routine_type as \"object_type\",\n $typeAggFunc(data_type $typeAggParam) as \"data_type\",\n max(external_language) as \"language\"\nfrom\n information_schema.routines where routine_schema !~ '^_timescaledb_' \n and routine_schema =SCHEMA_NAME_CONDITION\n and (\n (routine_type = 'PROCEDURE' and ('procedures:' || routine_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n or\n (routine_type = 'FUNCTION' and ('functions:' || routine_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n )\n group by routine_name, routine_schema, routine_type\n"},382:e=>{e.exports="\nselect infoTables.table_schema as \"schema_name\", infoTables.table_name as \"pure_name\"\nfrom information_schema.tables infoTables \nwhere infoTables.table_type not like '%VIEW%' \n and ('tables:' || infoTables.table_schema || '.' || infoTables.table_name) =OBJECT_ID_CONDITION\nand infoTables.table_schema <> 'pg_internal'\nand infoTables.table_schema !~ '^_timescaledb_' \nand infoTables.table_schema =SCHEMA_NAME_CONDITION\n"},697:e=>{e.exports="\nselect infoTables.table_schema as \"schema_name\", infoTables.table_name as \"pure_name\", \n (\n select $md5Function(string_agg(\n infoColumns.column_name || '|' || infoColumns.data_type || '|' || infoColumns.is_nullable::varchar(255) || '|' || coalesce(infoColumns.character_maximum_length, -1)::varchar(255) \n || '|' || coalesce(infoColumns.numeric_precision, -1)::varchar(255) ,\n ',' order by infoColumns.ordinal_position\n )) as \"hash_code_columns\"\n from information_schema.columns infoColumns \n where infoColumns.table_schema = infoTables.table_schema and infoColumns.table_name = infoTables.table_name\n ),\n (\n select $md5Function(string_agg(\n infoConstraints.constraint_name || '|' || infoConstraints.constraint_type ,\n ',' order by infoConstraints.constraint_name\n )) as \"hash_code_constraints\"\n from information_schema.table_constraints infoConstraints \n where infoConstraints.table_schema = infoTables.table_schema and infoConstraints.table_name = infoTables.table_name\n )\n \nfrom information_schema.tables infoTables \nwhere infoTables.table_type not like '%VIEW%' \n and ('tables:' || infoTables.table_schema || '.' || infoTables.table_name) =OBJECT_ID_CONDITION\nand infoTables.table_schema <> 'pg_internal'\nand infoTables.table_schema !~ '^_timescaledb_'\nand infoTables.table_schema =SCHEMA_NAME_CONDITION\n"},377:e=>{e.exports="\nSELECT \n t.oid AS trigger_id,\n t.tgname AS trigger_name,\n n.nspname AS schema_name,\n c.relname AS table_name,\n p.proname AS function_name,\n t.tgtype AS original_tgtype,\n CASE \n WHEN t.tgtype & 1 = 1 THEN 'ROW' \n ELSE 'STATEMENT' \n END AS trigger_level,\n COALESCE(\n CASE WHEN (tgtype::int::bit(7) & b'0000010')::int = 0 THEN NULL ELSE 'BEFORE' END,\n CASE WHEN (tgtype::int::bit(7) & b'0000010')::int = 0 THEN 'AFTER' ELSE NULL END,\n CASE WHEN (tgtype::int::bit(7) & b'1000000')::int = 0 THEN NULL ELSE 'INSTEAD OF' END,\n ''\n )::text as trigger_timing, \n (CASE WHEN (tgtype::int::bit(7) & b'0000100')::int = 0 THEN '' ELSE 'INSERT' END) ||\n (CASE WHEN (tgtype::int::bit(7) & b'0001000')::int = 0 THEN '' ELSE 'DELETE' END) ||\n (CASE WHEN (tgtype::int::bit(7) & b'0010000')::int = 0 THEN '' ELSE 'UPDATE' END) ||\n (CASE WHEN (tgtype::int::bit(7) & b'0100000')::int = 0 THEN '' ELSE 'TRUNCATE' END)\n as event_type,\n pg_get_triggerdef(t.oid) AS definition\nFROM \n pg_trigger t\nJOIN \n pg_class c ON c.oid = t.tgrelid\nJOIN \n pg_namespace n ON n.oid = c.relnamespace\nJOIN \n pg_proc p ON p.oid = t.tgfoid\nWHERE \n NOT t.tgisinternal AND n.nspname =SCHEMA_NAME_CONDITION\n"},171:e=>{e.exports="\n select cnt.conname as \"constraint_name\" from pg_constraint cnt \n inner join pg_namespace c on c.oid = cnt.connamespace\n where cnt.contype = 'u' and c.nspname =SCHEMA_NAME_CONDITION\n"},432:e=>{e.exports="\nselect \n table_name as \"pure_name\",\n table_schema as \"schema_name\",\n $md5Function(view_definition) as \"hash_code\"\nfrom\n information_schema.views where table_schema != 'information_schema' and table_schema != 'pg_catalog' and table_schema !~ '^_timescaledb_' and table_schema =SCHEMA_NAME_CONDITION\n"},864:e=>{e.exports='\nselect \n table_name as "pure_name",\n table_schema as "schema_name",\n view_definition as "create_sql",\n $md5Function(view_definition) as "hash_code"\nfrom\n information_schema.views \nwhere table_schema !~ \'^_timescaledb_\' and table_schema =SCHEMA_NAME_CONDITION\n and (\'views:\' || table_schema || \'.\' || table_name) =OBJECT_ID_CONDITION\n'},197:e=>{const{SqlDumper:a,arrayToHexString:n,testEqualTypes:t}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends a{transform(e,a){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^extract(^year ^from %c)",a);break;case"MONTH":this.put("^extract(^month ^from %c)",a);break;case"DAY":this.put("^extract(^day ^from %c)",a);break;case"GROUP:MONTH":this.put("^to_char(%c, '%s')",a,"YYYY-MM");break;case"GROUP:DAY":this.put("^to_char(%c, '%s')",a,"YYYY-MM-DD");break;default:a()}}dropDatabase(e){this.putCmd("^drop ^database %i ^with(^force)",e)}dropRecreatedTempTable(e){this.putCmd("^drop ^table %i ^cascade",e)}renameTable(e,a){this.putCmd("^alter ^table %f ^rename ^to %i",e,a)}renameSqlObject(e,a){this.putCmd("^alter %k %f ^rename ^to %i",this.getSqlObjectSqlName(e.objectTypeField),e,a)}renameColumn(e,a){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,a)}dropTable(e,a={}){this.put("^drop ^table"),a.testIfExists&&this.put(" ^if ^exists"),this.put(" %f",e),this.endCommand()}enableConstraints(e,a){this.putCmd("^alter ^table %f %k ^trigger ^all",e,a?"enable":"disable")}columnDefinition(e,a){e.autoIncrement?this.put("^serial"):super.columnDefinition(e,a)}changeColumn(e,a,n){e.columnName!=a.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,a.columnName),t(e,a)||this.putCmd("^alter ^table %f ^alter ^column %i ^type %s",e,a.columnName,a.dataType),e.defaultValue!=a.defaultValue&&(null==a.defaultValue?this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^default",a,a.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^set ^default %s",a,a.columnName,a.defaultValue)),e.notNull!=a.notNull&&(e.notNull||this.fillNewNotNullDefaults(a),a.notNull?this.putCmd("^alter ^table %f ^alter ^column %i ^set ^not ^null",a,a.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^not ^null",a,a.columnName))}putValue(e){!0===e?this.putRaw("true"):!1===e?this.putRaw("false"):super.putValue(e)}putByteArrayValue(e){this.putRaw(`e'\\\\x${n(e)}'`)}selectScopeIdentity(e){const a=e.columns&&e.columns.find((e=>e.autoIncrement));this.put("^SELECT currval(pg_get_serial_sequence('%f','%s'))",e,a?a.columnName:null)}callableTemplate(e){const a=e=>{for(const a of e.filter((e=>"RETURN"!=e.parameterMode)))"IN"==a.parameterMode?(this.put("%s %s := :%s",a.parameterName,a.dataType,a.parameterName),this.endCommand()):(this.put("%s %s",a.parameterName,a.dataType),this.endCommand());this.put("&n")},n=(e,a)=>{this.putCollection(a,e||[],(e=>{this.putRaw(e.parameterName)}))};"procedures"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),a(e.parameters),this.put("^begin&n"),this.put("^call %f(&>&n",e),n(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand()),"functions"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),this.put("result %s",e.returnType),this.endCommand(),a(e.parameters),this.put("^begin&n"),this.put("result := %f(&>&n",e),n(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand())}}},293:(e,a,n)=>{const{driverBase:t}=global.DBGATE_PACKAGES["dbgate-tools"],s=n(197),{postgreSplitterOptions:r}=n(994),i=["GEOGRAPHY","GEOMETRY"],o={rangeSelect:!0,ilike:!0,defaultSchemaName:"public",multipleSchema:!0,stringEscapeChar:"'",fallbackDataType:"varchar",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',stringAgg:!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,allowMultipleValuesInsert:!0,renameSqlObject:!0,filteredIndexes:!0,dropReferencesWhenDropTable:!0,requireStandaloneSelectForScopeIdentity:!0,predefinedDataTypes:["bigint","bigserial","bit","varbit","boolean","box","bytea","char(20)","varchar(250)","cidr","circle","date","double precision","inet","int","interval","json","jsonb","line","lseg","macaddr","macaddr8","money","numeric(10,2)","path","pg_lsn","pg_snapshot","point","polygon","real","smallint","smallserial","serial","text","time","timetz","timestamp","timestamptz","tsquery","tsvector","txid_snapshot","uuid","xml"],createColumnViewExpression:(e,a,n,t,s)=>a&&i.includes(a.toUpperCase())?{exprType:"call",func:"ST_AsText",alias:t||e,args:[{exprType:"column",columnName:e,source:n}]}:"uuid"==a?.toLowerCase()||"filter"==s&&a?.toLowerCase()?.startsWith("json")?{exprType:"unaryRaw",expr:{exprType:"column",source:n,columnName:e},afterSql:"::text",alias:t||e}:void 0},m={...t,dumperClass:s,dialect:o,getQuerySplitterOptions:e=>"editor"==e?{...r,ignoreComments:!0,preventSingleLineSplit:!0}:"import"==e?{...r,copyFromStdin:!0}:r,readOnlySessions:!0,databaseUrlPlaceholder:"e.g. postgresql://user:password@localhost:5432/default_database",showConnectionField:(e,a)=>{const n=["useDatabaseUrl","authType","user","isReadOnly","useSeparateSchemas"];return"awsIam"==a.authType&&n.push("awsRegion","secretAccessKey","accessKeyId"),"socket"==a.authType?n.push("socketPath"):a.useDatabaseUrl?n.push("databaseUrl"):n.push("server","port"),"awsIam"!=a.authType&&"socket"!=a.authType&&n.push("password"),a.useDatabaseUrl||n.push("defaultDatabase","singleDatabase"),n.includes(e)},beforeConnectionSave:e=>{const{databaseUrl:a}=e;if(a){const n=a.match(/\/([^/]+)($|\?)/);return{...e,singleDatabase:!!n,defaultDatabase:n?n[1]:null}}return e},__analyserInternals:{},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:"CREATE TRIGGER trigger_name\nBEFORE INSERT ON table_name\nFOR EACH ROW\nEXECUTE FUNCTION function_name();"}],authTypeLabel:"Connection mode",defaultAuthTypeName:"hostPort",defaultSocketPath:"/var/run/postgresql"},l={...m,engine:"postgres@dbgate-plugin-postgres",title:"PostgreSQL",defaultPort:5432,dialect:{...o,materializedViews:!0},dialectByVersion:e=>e?{...o,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3),isFipsComplianceOn:e.isFipsComplianceOn}:o},c={...m,engine:"cockroach@dbgate-plugin-postgres",title:"CockroachDB",defaultPort:26257,dialect:{...o,materializedViews:!0,dropColumnDependencies:["primaryKey","dependencies"],dropPrimaryKey:!1},__analyserInternals:{}},p={...m,dialect:{...o,stringAgg:!1},__analyserInternals:{skipIndexes:!0},engine:"redshift@dbgate-plugin-postgres",title:"Amazon Redshift",defaultPort:5439,premiumOnly:!0,databaseUrlPlaceholder:"e.g. redshift-cluster-1.xxxx.redshift.amazonaws.com:5439/dev",showConnectionField:(e,a)=>["databaseUrl","user","password","isReadOnly","useSeparateSchemas"].includes(e),beforeConnectionSave:e=>{const{databaseUrl:a}=e;if(a){const n=a.match(/\/([^/]+)$/);if(n)return{...e,singleDatabase:!0,defaultDatabase:n[1]}}return e}};e.exports=[l,c,p]},825:e=>{"use strict";e.exports=require("lodash")},449:e=>{"use strict";e.exports=require("pg")},269:e=>{"use strict";e.exports=require("pg-copy-streams")},158:e=>{"use strict";e.exports=require("wkx")},203:e=>{"use strict";e.exports=require("stream")}},a={},n=function n(t){var s=a[t];if(void 0!==s)return s.exports;var r=a[t]={exports:{}};return e[t](r,r.exports,n),r.exports}(237);module.exports=n})();
1
+ (()=>{var e={994:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.oracleSplitterOptions=a.redisSplitterOptions=a.noSplitSplitterOptions=a.mongoSplitterOptions=a.sqliteSplitterOptions=a.postgreSplitterOptions=a.mssqlSplitterOptions=a.mysqlSplitterOptions=a.defaultSplitterOptions=void 0,a.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,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},a.mysqlSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`"],stringsEnds:{"'":"'","`":"`"},stringEscapes:{"'":"\\","`":"`"}}),a.mssqlSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),a.postgreSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),a.sqliteSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),a.mongoSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),a.noSplitSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{noSplit:!0}),a.redisSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{splitByLines:!0}),a.oracleSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}})},688:(e,a,n)=>{const t=n(825),s=n(926),{DatabaseAnalyser:r,isTypeString:i,isTypeNumeric:o,isCompositeDbName:m,splitCompositeDbName:l}=global.DBGATE_PACKAGES["dbgate-tools"];function c(e){return"character varying"==e?"varchar":"timestamp without time zone"==e?"timestamp":e}function p({is_nullable:e,column_name:a,data_type:n,char_max_length:t,numeric_precision:s,numeric_ccale:r,default_value:m},l=void 0,p=void 0,u=void 0){const _=c(n);let d=_;t&&i(_)&&(d=`${_}(${t})`),s&&r&&o(_)&&(d=`${_}(${s},${r})`);const h=!(!m||!m.startsWith("nextval("));return l&&p&&p.rows.find((e=>e.schema_name==l.schemaName&&e.pure_name==l.pureName&&e.column_name==a))&&(d="geometry"),l&&u&&u.rows.find((e=>e.schema_name==l.schemaName&&e.pure_name==l.pureName&&e.column_name==a))&&(d="geography"),{columnName:a,dataType:d,notNull:!e||"NO"==e||"no"==e,defaultValue:h?void 0:m,autoIncrement:h}}function u(e=[]){return e?.length?e.map((e=>{const a=e.parameterMode?`${e.parameterMode} `:"",n=e.dataType?` ${e.dataType.toUpperCase()}`:"";return`${a}${e.parameterName??""}${n}`})).join(", "):""}e.exports=class extends r{constructor(e,a,n){super(e,a,n)}createQuery(e,a,n={}){return super.createQuery(s[e],a,{...n,$typeAggFunc:this.driver.dialect.stringAgg?"string_agg":"max",$typeAggParam:this.driver.dialect.stringAgg?", '|'":"",$md5Function:this.dialect?.isFipsComplianceOn?"LENGTH":"MD5"})}async _computeSingleObjectId(){const{typeField:e,schemaName:a,pureName:n}=this.singleObjectFilter;this.singleObjectId=`${e}:${a||"public"}.${n}`}async _runAnalysis(){this.feedback({analysingMessage:"Loading tables"});const e=await this.analyserQuery(this.driver.dialect.stringAgg?"tableModifications":"tableList",["tables"]);this.feedback({analysingMessage:"Loading columns"});const a=await this.analyserQuery("columns",["tables","views"]);this.feedback({analysingMessage:"Loading primary keys"});const n=await this.analyserQuery("primaryKeys",["tables"]);let s=null;this.feedback({analysingMessage:"Loading foreign key constraints"}),this.feedback({analysingMessage:"Loading foreign key refs"});const i=await this.analyserQuery("foreignKeys",["tables"]);this.feedback({analysingMessage:"Loading foreign key columns"});const o=await this.analyserQuery("fk_keyColumnUsage",["tables"]),m=[];for(const e of i.rows){const a=t.sortBy(o.rows.filter((a=>a.table_name==e.table_name&&a.constraint_name==e.constraint_name&&a.table_schema==e.table_schema)),"ordinal_position"),n=t.sortBy(o.rows.filter((a=>a.table_name==e.ref_table_name&&a.constraint_name==e.unique_constraint_name&&a.table_schema==e.ref_table_schema)),"ordinal_position");if(a.length==n.length)for(let t=0;t<a.length;t++){const s=a[t],r=n[t];m.push({...e,pure_name:e.table_name,schema_name:e.table_schema,ref_table_name:e.ref_table_name,ref_schema_name:e.ref_table_schema,column_name:s.column_name,ref_column_name:r.column_name})}}s={rows:m},this.feedback({analysingMessage:"Loading views"});const l=await this.analyserQuery("views",["views"]);this.feedback({analysingMessage:"Loading materialized views"});const _=this.driver.dialect.materializedViews?await this.analyserQuery("matviews",["matviews"]):null;this.feedback({analysingMessage:"Loading materialized view columns"});const d=this.driver.dialect.materializedViews?await this.analyserQuery("matviewColumns",["matviews"]):null;this.feedback({analysingMessage:"Loading routines"});const h=await this.analyserQuery("routines",["procedures","functions"]);this.feedback({analysingMessage:"Loading routine parameters"});const g=await this.analyserQuery("proceduresParameters");this.feedback({analysingMessage:"Loading indexes"});const b=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexes",["tables"]);this.feedback({analysingMessage:"Loading index columns"});const f=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexcols",["tables"]);this.feedback({analysingMessage:"Loading unique names"});const y=await this.analyserQuery("uniqueNames",["tables"]);let N={rows:[]};l.rows.find((e=>"geometry_columns"==e.pure_name&&"public"==e.schema_name))&&(this.feedback({analysingMessage:"Loading geometry columns"}),N=await this.analyserQuery("geometryColumns",["tables"]));let E={rows:[]};l.rows.find((e=>"geography_columns"==e.pure_name&&"public"==e.schema_name))&&(this.feedback({analysingMessage:"Loading geography columns"}),E=await this.analyserQuery("geographyColumns",["tables"])),this.feedback({analysingMessage:"Loading triggers"});const C=await this.analyserQuery("triggers");this.feedback({analysingMessage:"Finalizing DB structure"});const O=s.rows.map((e=>({pureName:e.pure_name,schemaName:e.schema_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,refSchemaName:e.ref_schema_name}))),T=n.rows.map((e=>({pureName:e.pure_name,schemaName:e.schema_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name}))),w=g.rows.filter((e=>"PROCEDURE"==e.routine_type)).map((e=>({pureName:e.pure_name,parameterName:e.parameter_name,dataType:c(e.data_type),parameterMode:e.parameter_mode,schemaName:e.schema_name}))).reduce(((e,a)=>(e[`${a.schemaName}.${a.pureName}`]||(e[`${a.schemaName}.${a.pureName}`]=[]),e[`${a.schemaName}.${a.pureName}`].push(a),e)),{}),S=g.rows.filter((e=>"FUNCTION"==e.routine_type)).map((e=>({pureName:e.pure_name,parameterName:e.parameter_name,dataType:c(e.data_type),parameterMode:e.parameter_mode,schemaName:e.schema_name}))).reduce(((e,a)=>(e[`${a.schemaName}.${a.pureName}`]||(e[`${a.schemaName}.${a.pureName}`]=[]),e[`${a.schemaName}.${a.pureName}`].push(a),e)),{}),I={tables:e.rows.map((e=>{const n={pureName:e.pure_name,schemaName:e.schema_name,objectId:`tables:${e.schema_name}.${e.pure_name}`,contentHash:e.hash_code_columns?`${e.hash_code_columns}-${e.hash_code_constraints}`:null};return{...n,columns:a.rows.filter((a=>a.pure_name==e.pure_name&&a.schema_name==e.schema_name)).map((e=>p(e,n,N,E))),primaryKey:r.extractPrimaryKeys(n,T),foreignKeys:r.extractForeignKeys(n,O),indexes:b.rows.filter((a=>a.table_name==e.pure_name&&a.schema_name==e.schema_name&&!y.rows.find((e=>e.constraint_name==a.index_name)))).map((e=>{const a=e.indoption.split(" ");return{constraintName:e.index_name,isUnique:e.is_unique,columns:t.compact(e.indkey.split(" ").map((a=>f.rows.find((n=>n.oid==e.oid&&n.attnum==a)))).filter((e=>null!=e)).map(((e,n)=>({columnName:e.column_name,isDescending:parseInt(a[n])>0}))))}})),uniques:b.rows.filter((a=>a.table_name==e.pure_name&&a.schema_name==e.schema_name&&y.rows.find((e=>e.constraint_name==a.index_name)))).map((e=>({constraintName:e.index_name,columns:t.compact(e.indkey.split(" ").map((a=>f.rows.find((n=>n.oid==e.oid&&n.attnum==a)))).filter((e=>null!=e)).map((e=>({columnName:e.column_name}))))})))}})),views:l.rows.map((e=>({objectId:`views:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code,createSql:`CREATE VIEW "${e.schema_name}"."${e.pure_name}"\nAS\n${e.create_sql}`,columns:a.rows.filter((a=>a.pure_name==e.pure_name&&a.schema_name==e.schema_name)).map((e=>p(e)))}))),matviews:_?_.rows.map((e=>({objectId:`matviews:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code,createSql:`CREATE MATERIALIZED VIEW "${e.schema_name}"."${e.pure_name}"\nAS\n${e.definition}`,columns:d.rows.filter((a=>a.pure_name==e.pure_name&&a.schema_name==e.schema_name)).map((e=>p(e)))}))):void 0,procedures:h.rows.filter((e=>"PROCEDURE"==e.object_type)).map((e=>({objectId:`procedures:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,createSql:`CREATE PROCEDURE "${e.schema_name}"."${e.pure_name}"(${u(w[`${e.schema_name}.${e.pure_name}`])}) LANGUAGE ${e.language}\nAS\n$$\n${e.definition}\n$$`,contentHash:e.hash_code,parameters:w[`${e.schema_name}.${e.pure_name}`]}))),functions:h.rows.filter((e=>"FUNCTION"==e.object_type)).map((e=>({objectId:`functions:${e.schema_name}.${e.pure_name}`,createSql:`CREATE FUNCTION "${e.schema_name}"."${e.pure_name}"(${u(S[`${e.schema_name}.${e.pure_name}`])}) RETURNS ${e.data_type.toUpperCase()} LANGUAGE ${e.language}\nAS\n$$\n${e.definition}\n$$`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code,parameters:S[`${e.schema_name}.${e.pure_name}`],returnType:e.data_type}))),triggers:C.rows.map((e=>({pureName:e.trigger_name,trigerName:e.trigger_name,functionName:e.function_name,triggerTiming:e.trigger_timing,triggerLevel:e.trigger_level,eventType:e.event_type,schemaName:e.schema_name,tableName:e.table_name,createSql:e.definition,contentHash:`triggers:${e.trigger_id}`,objectId:`triggers:${e.trigger_id}`})))};return this.feedback({analysingMessage:null}),this.logger.debug({tables:I.tables?.length,columns:t.sum(I.tables?.map((e=>e.columns?.length))),primaryKeys:I.tables?.filter((e=>e.primaryKey))?.length,foreignKeys:t.sum(I.tables?.map((e=>e.foreignKeys?.length))),indexes:t.sum(I.tables?.map((e=>e.indexes?.length))),uniques:t.sum(I.tables?.map((e=>e.uniques?.length))),views:I.views?.length,matviews:I.matviews?.length,procedures:I.procedures?.length,functions:I.functions?.length},"Database structured finalized"),I}async _getFastSnapshot(){const e=this.driver.dialect.stringAgg?await this.analyserQuery("tableModifications"):null,a=await this.analyserQuery("viewModifications"),n=this.driver.dialect.materializedViews?await this.analyserQuery("matviewModifications"):null,t=await this.analyserQuery("routineModifications");return{tables:e?e.rows.map((e=>({objectId:`tables:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:`${e.hash_code_columns}-${e.hash_code_constraints}`}))):null,views:a.rows.map((e=>({objectId:`views:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code}))),matviews:n?n.rows.map((e=>({objectId:`matviews:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code}))):void 0,procedures:t.rows.filter((e=>"PROCEDURE"==e.object_type)).map((e=>({objectId:`procedures:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code}))),functions:t.rows.filter((e=>"FUNCTION"==e.object_type)).map((e=>({objectId:`functions:${e.schema_name}.${e.pure_name}`,pureName:e.pure_name,schemaName:e.schema_name,contentHash:e.hash_code})))}}getDefaultSchemaNameCondition(){return"not in ('pg_catalog', 'pg_toast', 'information_schema')"}}},378:(e,a,n)=>{const t=n(825),s=n(203),r=n(293),i=n(688),o=n(158),m=n(449),l=n(269),{getLogger:c,createBulkInsertStreamBase:p,makeUniqueColumnNames:u,extractDbNameFromComposite:_,extractErrorLogData:d}=global.DBGATE_PACKAGES["dbgate-tools"];let h;const g=c("postreDriver");function b(e){try{const a=Buffer.from(e,"hex");return o.Geometry.parse(a).toWkt()}catch(a){return e}}function f(e,a){if(!a?.length)return e;for(const n of a){const{columnName:a,dataTypeName:t}=n;"geography"==t&&(e[a]=b(e[a]))}return e}function y(e,a){if(!e||!e.fields)return[];const{typeIdToName:n={}}=a,t=e.fields.map((e=>({columnName:e.name,dataTypeId:e.dataTypeID,dataTypeName:n[e.dataTypeID]})));return u(t),t}function N(e,a){return t.zipObject(a.map((e=>e.columnName)),e)}m.types.setTypeParser(1082,"text",(e=>e)),m.types.setTypeParser(1114,"text",(e=>e)),m.types.setTypeParser(1184,"text",(e=>e));const E=r.map((e=>({...e,analyserClass:i,async connect(a){const{engine:n,server:s,port:r,user:i,password:o,database:l,databaseUrl:c,useDatabaseUrl:p,ssl:u,isReadOnly:d,authType:g,socketPath:b}=a;let f=null,y=null;if("awsIam"==g&&(y=await h.getAwsIamToken(a)),"redshift@dbgate-plugin-postgres"==n){let e=c;e&&e.startsWith("jdbc:redshift://")&&(e=e.substring(16)),e=i&&o?`postgres://${i}:${o}@${e}`:i?`postgres://${i}@${e}`:`postgres://${e}`,f={connectionString:e}}else f=p?{connectionString:c,application_name:"DbGate"}:{host:"socket"==g?b||e.defaultSocketPath:s,port:"socket"==g?null:r,user:i,password:y||o,database:_(l)||"postgres",ssl:"awsIam"==g?u||{rejectUnauthorized:!1}:u,application_name:"DbGate"};const N=new m.Client(f);await N.connect();const E={client:N,database:l},C=await this.query(E,"SELECT oid, typname FROM pg_type WHERE typname in ('geography')"),O=t.fromPairs(C.rows.map((e=>[e.oid,e.typname])));return E.typeIdToName=O,d&&await this.query(E,"SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY"),E},close:async e=>e.client.end(),async query(e,a){if(null==a)return{rows:[],columns:[]};const n=await e.client.query({text:a,rowMode:"array"}),t=y(n,e);return{rows:(n.rows||[]).map((e=>N(e,t))),columns:t}},stream(e,a,n){const s=new m.Query({text:a,rowMode:"array"});let r=!1,i=null;s.on("row",(a=>{if(r||(columns=y(s._result,e),columns&&columns.length>0&&n.recordset(columns),r=!0),!i){const a=Object.values(e.typeIdToName??{});i=columns.filter((e=>a.includes(e.dataTypeName)))}const t=f(N(a,columns),i);n.row(t)})),s.on("end",(()=>{const{command:a,rowCount:i}=s._result||{};"SELECT"!=a&&t.isNumber(i)&&n.info({message:`${i} rows affected`,time:new Date,severity:"info"}),r||(columns=y(s._result,e),columns&&columns.length>0&&n.recordset(columns),r=!0),n.done()})),s.on("error",(e=>{g.error(d(e),"Stream error");const{message:t,position:s,procName:r}=e;let i=null;s&&(i=a.substring(0,parseInt(s)).replace(/[^\n]/g,"").length),n.info({message:t,line:i,procedure:r,time:new Date,severity:"error"}),n.done()})),e.client.query(s)},async getVersion(e){const{rows:a}=await this.query(e,"SELECT version()"),{version:n}=a[0];let t=!1;try{await this.query(e,"SELECT MD5('test')")}catch(e){t=!0}const s=n.toLowerCase().includes("cockroachdb"),r=n.toLowerCase().includes("redshift"),i=!s&&!r,o=n.match(/([\d\.]+)/);let m=null,l=null,c=null;if(o){s&&(m=`CockroachDB ${o[1]}`),r&&(m=`Redshift ${o[1]}`),i&&(m=`PostgreSQL ${o[1]}`);const e=o[1].split(".");e[0]&&(l=parseInt(e[0])),e[1]&&(c=parseInt(e[1]))}return{version:n,versionText:m,isPostgres:i,isCockroach:s,isRedshift:r,versionMajor:l,versionMinor:c,isFipsComplianceOn:t}},async readQuery(e,a,n){const t=new m.Query({text:a,rowMode:"array"});let r=!1,i=null,o=null;const l=new s.PassThrough({objectMode:!0,highWaterMark:100});return t.on("row",(a=>{if(r||(i=y(t._result,e),l.write({__isStreamHeader:!0,...n||{columns:i}}),r=!0),!o){const a=Object.values(e.typeIdToName??{});o=i.filter((e=>a.includes(e.dataTypeName)))}const s=f(N(a,i),o);l.write(s)})),t.on("end",(()=>{r||(i=y(t._result,e),l.write({__isStreamHeader:!0,...n||{columns:i}}),r=!0),l.end()})),t.on("error",(e=>{console.error(e),l.end()})),e.client.query(t),l},async writeTable(e,a,n){return p(this,s,e,a,n)},async listDatabases(e){const{rows:a}=await this.query(e,"SELECT datname AS name FROM pg_database WHERE datistemplate = false");return a},getAuthTypes(){const e=[{title:"Host and port",name:"hostPort"},{title:"Socket",name:"socket"}];return h.supportsAwsIam()&&e.push({title:"AWS IAM",name:"awsIam"}),e},async listSchemas(e){const a=await this.query(e,'select oid as "object_id", nspname as "schema_name" from pg_catalog.pg_namespace'),n=await this.query(e,"SELECT current_schema"),t=n.rows[0]?.current_schema?.trim();return g.debug(`Loaded ${a.rows.length} postgres schemas`),a.rows.map((e=>({schemaName:e.schema_name,objectId:e.object_id,isDefault:e.schema_name==t})))},writeQueryFromStream:(e,a)=>e.client.query(l.from(a))})));E.initialize=e=>{h=e.authProxy},e.exports=E},237:(e,a,n)=>{const t=n(378);e.exports={packageName:"dbgate-plugin-postgres",drivers:t,initialize(e){t.initialize(e)}}},925:e=>{e.exports='\nselect \n\ttable_schema as "schema_name", \n\ttable_name as "pure_name", \n\tcolumn_name as "column_name",\n\tis_nullable as "is_nullable",\n\tdata_type as "data_type",\n\tcharacter_maximum_length as "char_max_length",\n\tnumeric_precision as "numeric_precision",\n\tnumeric_scale as "numeric_scale",\n\tcolumn_default as "default_value"\nfrom information_schema.columns\nwhere \n\t\ttable_schema !~ \'^_timescaledb_\' \n\t\tand (\n\t\t\t(\'tables:\' || table_schema || \'.\' || table_name) =OBJECT_ID_CONDITION\n\t\t\tor\n\t\t\t(\'views:\' || table_schema || \'.\' || table_name) =OBJECT_ID_CONDITION\n\t\t)\n\t\tand table_schema =SCHEMA_NAME_CONDITION\norder by ordinal_position\n'},264:e=>{e.exports="\nselect \n\tbasecol.constraint_name,\n\tbasecol.constraint_schema,\n\tbasecol.column_name as \"column_name\",\n\tbasecol.table_schema,\n\tbasecol.table_name,\n\tbasecol.ordinal_position\nfrom information_schema.key_column_usage basecol\nwhere ('tables:' || basecol.table_schema || '.' || basecol.table_name) =OBJECT_ID_CONDITION and basecol.table_schema =SCHEMA_NAME_CONDITION\n"},958:e=>{e.exports="\nSELECT \n nsp.nspname AS table_schema,\n rel.relname AS table_name,\n con.conname AS constraint_name,\n nsp2.nspname AS ref_table_schema,\n rel2.relname AS ref_table_name,\n conpk.conname AS unique_constraint_name\nFROM pg_constraint con\nJOIN pg_class rel ON rel.oid = con.conrelid\nJOIN pg_namespace nsp ON nsp.oid = rel.relnamespace\nJOIN pg_class rel2 ON rel2.oid = con.confrelid\nJOIN pg_namespace nsp2 ON nsp2.oid = rel2.relnamespace\nJOIN pg_constraint conpk \n ON conpk.conrelid = con.confrelid \n AND conpk.conkey = con.confkey\n AND conpk.contype IN ('p','u') -- 'p' = primary key, 'u' = unique constraint\nWHERE con.contype = 'f' AND ('tables:' || nsp.nspname || '.' || rel.relname) =OBJECT_ID_CONDITION AND nsp.nspname =SCHEMA_NAME_CONDITION\n;\n"},477:e=>{e.exports='\nselect \n\tf_table_schema as "schema_name", \n\tf_table_name as "pure_name", \n\tf_geography_column as "column_name"\nfrom public.geography_columns\nwhere (\'tables:\' || f_table_schema || \'.\' || f_table_name) =OBJECT_ID_CONDITION and f_table_schema =SCHEMA_NAME_CONDITION\n'},981:e=>{e.exports='\nselect \n\tf_table_schema as "schema_name", \n\tf_table_name as "pure_name", \n\tf_geometry_column as "column_name"\nfrom public.geometry_columns\nwhere (\'tables:\' || f_table_schema || \'.\' || f_table_name) =OBJECT_ID_CONDITION and f_table_schema =SCHEMA_NAME_CONDITION\n'},926:(e,a,n)=>{const t=n(925),s=n(697),r=n(382),i=n(432),o=n(748),m=n(916),l=n(864),c=n(124),p=n(701),u=n(389),_=n(422),d=n(474),h=n(689),g=n(171),b=n(981),f=n(477),y=n(754),N=n(958),E=n(377),C=n(264);e.exports={columns:t,tableModifications:s,tableList:r,viewModifications:i,primaryKeys:m,fk_keyColumnUsage:C,foreignKeys:N,views:l,routines:p,routineModifications:u,matviews:c,matviewModifications:o,matviewColumns:_,indexes:d,indexcols:h,uniqueNames:g,geometryColumns:b,geographyColumns:f,proceduresParameters:y,triggers:E}},689:e=>{e.exports="\n select\n a.attname as \"column_name\",\n a.attnum as \"attnum\",\n a.attrelid as \"oid\"\n from\n pg_class t,\n pg_class i,\n pg_attribute a,\n pg_index ix,\n pg_namespace c\n where\n t.oid = ix.indrelid\n and a.attnum = ANY(ix.indkey)\n and a.attrelid = t.oid\n and i.oid = ix.indexrelid\n and t.relkind = 'r'\n and ix.indisprimary = false\n and t.relnamespace = c.oid\n and c.nspname != 'pg_catalog'\n and ('tables:' || c.nspname || '.' || t.relname) =OBJECT_ID_CONDITION\n and c.nspname =SCHEMA_NAME_CONDITION\n order by\n t.relname\n"},474:e=>{e.exports='\n select\n t.relname as "table_name",\n c.nspname as "schema_name",\n i.relname as "index_name",\n ix.indisprimary as "is_primary",\n ix.indisunique as "is_unique",\n ix.indkey as "indkey",\n ix.indoption as "indoption",\n t.oid as "oid"\n from\n pg_class t,\n pg_class i,\n pg_index ix,\n pg_namespace c\n where\n t.oid = ix.indrelid\n and i.oid = ix.indexrelid\n and t.relkind = \'r\'\n and ix.indisprimary = false\n and t.relnamespace = c.oid\n and c.nspname != \'pg_catalog\'\n and (\'tables:\' || c.nspname || \'.\' || t.relname) =OBJECT_ID_CONDITION\n and c.nspname =SCHEMA_NAME_CONDITION\n order by\n t.relname\n'},422:e=>{e.exports='\nSELECT pg_namespace.nspname AS "schema_name"\n , pg_class.relname AS "pure_name"\n , pg_attribute.attname AS "column_name"\n , pg_catalog.format_type(pg_attribute.atttypid, pg_attribute.atttypmod) AS "data_type"\nFROM pg_catalog.pg_class\n INNER JOIN pg_catalog.pg_namespace\n ON pg_class.relnamespace = pg_namespace.oid\n INNER JOIN pg_catalog.pg_attribute\n ON pg_class.oid = pg_attribute.attrelid\n-- Keeps only materialized views, and non-db/catalog/index columns \nWHERE pg_class.relkind = \'m\'\n AND pg_attribute.attnum >= 1\n AND (\'matviews:\' || pg_namespace.nspname || \'.\' || pg_class.relname) =OBJECT_ID_CONDITION\n AND pg_namespace.nspname =SCHEMA_NAME_CONDITION\n\nORDER BY pg_attribute.attnum\n'},748:e=>{e.exports='\nselect \n matviewname as "pure_name",\n schemaname as "schema_name",\n $md5Function(definition) as "hash_code"\nfrom\n pg_catalog.pg_matviews WHERE schemaname NOT LIKE \'pg_%\' AND schemaname =SCHEMA_NAME_CONDITION\n'},124:e=>{e.exports='\nselect \n matviewname as "pure_name",\n schemaname as "schema_name",\n definition as "definition",\n $md5Function(definition) as "hash_code"\nfrom\n pg_catalog.pg_matviews WHERE schemaname NOT LIKE \'pg_%\' \n and (\'matviews:\' || schemaname || \'.\' || matviewname) =OBJECT_ID_CONDITION\n and schemaname =SCHEMA_NAME_CONDITION\n'},916:e=>{e.exports='\nselect \n\ttable_constraints.constraint_schema as "constraint_schema",\n\ttable_constraints.constraint_name as "constraint_name",\n\ttable_constraints.table_schema as "schema_name",\n\ttable_constraints.table_name as "pure_name",\n\tkey_column_usage.column_name as "column_name"\nfrom information_schema.table_constraints\ninner join information_schema.key_column_usage on table_constraints.table_name = key_column_usage.table_name and table_constraints.constraint_name = key_column_usage.constraint_name\n and table_constraints.table_schema = key_column_usage.table_schema\nwhere \n\t\ttable_constraints.table_schema !~ \'^_timescaledb_\' \n\t\tand table_constraints.constraint_type = \'PRIMARY KEY\'\n\t\tand (\'tables:\' || table_constraints.table_schema || \'.\' || table_constraints.table_name) =OBJECT_ID_CONDITION\n\t\tand table_constraints.table_schema =SCHEMA_NAME_CONDITION\norder by key_column_usage.ordinal_position\n'},754:e=>{e.exports="\nSELECT \n proc.specific_schema AS schema_name,\n proc.routine_name AS pure_name,\n proc.routine_type as routine_type,\n args.parameter_name AS parameter_name,\n args.parameter_mode,\n args.data_type AS data_type,\n args.ordinal_position AS parameter_index,\n args.parameter_mode AS parameter_mode\nFROM \n information_schema.routines proc \nLEFT JOIN \n information_schema.parameters args\n ON proc.specific_schema = args.specific_schema\n AND proc.specific_name = args.specific_name\nWHERE \n proc.specific_schema NOT IN ('pg_catalog', 'information_schema') -- Exclude system schemas\n AND args.parameter_name IS NOT NULL\n AND proc.routine_type IN ('PROCEDURE', 'FUNCTION') -- Filter for procedures\n AND proc.specific_schema !~ '^_timescaledb_' \n AND proc.specific_schema =SCHEMA_NAME_CONDITION\n AND (\n (routine_type = 'PROCEDURE' AND ('procedures:' || proc.specific_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n OR\n (routine_type = 'FUNCTION' AND ('functions:' || proc.specific_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n )\nORDER BY \n schema_name,\n args.ordinal_position;\n"},389:e=>{e.exports='\nselect \n routine_name as "pure_name",\n routine_schema as "schema_name",\n $md5Function(routine_definition) as "hash_code",\n routine_type as "object_type"\nfrom\n information_schema.routines where routine_schema !~ \'^_timescaledb_\' \n and routine_type in (\'PROCEDURE\', \'FUNCTION\') and routine_schema =SCHEMA_NAME_CONDITION\n'},701:e=>{e.exports="\nselect \n routine_name as \"pure_name\",\n routine_schema as \"schema_name\",\n max(routine_definition) as \"definition\",\n max($md5Function(routine_definition)) as \"hash_code\",\n routine_type as \"object_type\",\n $typeAggFunc(data_type $typeAggParam) as \"data_type\",\n max(external_language) as \"language\"\nfrom\n information_schema.routines where routine_schema !~ '^_timescaledb_' \n and routine_schema =SCHEMA_NAME_CONDITION\n and (\n (routine_type = 'PROCEDURE' and ('procedures:' || routine_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n or\n (routine_type = 'FUNCTION' and ('functions:' || routine_schema || '.' || routine_name) =OBJECT_ID_CONDITION)\n )\n group by routine_name, routine_schema, routine_type\n"},382:e=>{e.exports="\nselect infoTables.table_schema as \"schema_name\", infoTables.table_name as \"pure_name\"\nfrom information_schema.tables infoTables \nwhere infoTables.table_type not like '%VIEW%' \n and ('tables:' || infoTables.table_schema || '.' || infoTables.table_name) =OBJECT_ID_CONDITION\nand infoTables.table_schema <> 'pg_internal'\nand infoTables.table_schema !~ '^_timescaledb_' \nand infoTables.table_schema =SCHEMA_NAME_CONDITION\n"},697:e=>{e.exports="\nselect infoTables.table_schema as \"schema_name\", infoTables.table_name as \"pure_name\", \n (\n select $md5Function(string_agg(\n infoColumns.column_name || '|' || infoColumns.data_type || '|' || infoColumns.is_nullable::varchar(255) || '|' || coalesce(infoColumns.character_maximum_length, -1)::varchar(255) \n || '|' || coalesce(infoColumns.numeric_precision, -1)::varchar(255) ,\n ',' order by infoColumns.ordinal_position\n )) as \"hash_code_columns\"\n from information_schema.columns infoColumns \n where infoColumns.table_schema = infoTables.table_schema and infoColumns.table_name = infoTables.table_name\n ),\n (\n select $md5Function(string_agg(\n infoConstraints.constraint_name || '|' || infoConstraints.constraint_type ,\n ',' order by infoConstraints.constraint_name\n )) as \"hash_code_constraints\"\n from information_schema.table_constraints infoConstraints \n where infoConstraints.table_schema = infoTables.table_schema and infoConstraints.table_name = infoTables.table_name\n )\n \nfrom information_schema.tables infoTables \nwhere infoTables.table_type not like '%VIEW%' \n and ('tables:' || infoTables.table_schema || '.' || infoTables.table_name) =OBJECT_ID_CONDITION\nand infoTables.table_schema <> 'pg_internal'\nand infoTables.table_schema !~ '^_timescaledb_'\nand infoTables.table_schema =SCHEMA_NAME_CONDITION\n"},377:e=>{e.exports="\nSELECT \n t.oid AS trigger_id,\n t.tgname AS trigger_name,\n n.nspname AS schema_name,\n c.relname AS table_name,\n p.proname AS function_name,\n t.tgtype AS original_tgtype,\n CASE \n WHEN t.tgtype & 1 = 1 THEN 'ROW' \n ELSE 'STATEMENT' \n END AS trigger_level,\n COALESCE(\n CASE WHEN (tgtype::int::bit(7) & b'0000010')::int = 0 THEN NULL ELSE 'BEFORE' END,\n CASE WHEN (tgtype::int::bit(7) & b'0000010')::int = 0 THEN 'AFTER' ELSE NULL END,\n CASE WHEN (tgtype::int::bit(7) & b'1000000')::int = 0 THEN NULL ELSE 'INSTEAD OF' END,\n ''\n )::text as trigger_timing, \n (CASE WHEN (tgtype::int::bit(7) & b'0000100')::int = 0 THEN '' ELSE 'INSERT' END) ||\n (CASE WHEN (tgtype::int::bit(7) & b'0001000')::int = 0 THEN '' ELSE 'DELETE' END) ||\n (CASE WHEN (tgtype::int::bit(7) & b'0010000')::int = 0 THEN '' ELSE 'UPDATE' END) ||\n (CASE WHEN (tgtype::int::bit(7) & b'0100000')::int = 0 THEN '' ELSE 'TRUNCATE' END)\n as event_type,\n pg_get_triggerdef(t.oid) AS definition\nFROM \n pg_trigger t\nJOIN \n pg_class c ON c.oid = t.tgrelid\nJOIN \n pg_namespace n ON n.oid = c.relnamespace\nJOIN \n pg_proc p ON p.oid = t.tgfoid\nWHERE \n NOT t.tgisinternal AND n.nspname =SCHEMA_NAME_CONDITION\n"},171:e=>{e.exports="\n select cnt.conname as \"constraint_name\" from pg_constraint cnt \n inner join pg_namespace c on c.oid = cnt.connamespace\n where cnt.contype = 'u' and c.nspname =SCHEMA_NAME_CONDITION\n"},432:e=>{e.exports="\nselect \n table_name as \"pure_name\",\n table_schema as \"schema_name\",\n $md5Function(view_definition) as \"hash_code\"\nfrom\n information_schema.views where table_schema != 'information_schema' and table_schema != 'pg_catalog' and table_schema !~ '^_timescaledb_' and table_schema =SCHEMA_NAME_CONDITION\n"},864:e=>{e.exports='\nselect \n table_name as "pure_name",\n table_schema as "schema_name",\n view_definition as "create_sql",\n $md5Function(view_definition) as "hash_code"\nfrom\n information_schema.views \nwhere table_schema !~ \'^_timescaledb_\' and table_schema =SCHEMA_NAME_CONDITION\n and (\'views:\' || table_schema || \'.\' || table_name) =OBJECT_ID_CONDITION\n'},197:e=>{const{SqlDumper:a,arrayToHexString:n,testEqualTypes:t}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends a{transform(e,a){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^extract(^year ^from %c)",a);break;case"MONTH":this.put("^extract(^month ^from %c)",a);break;case"DAY":this.put("^extract(^day ^from %c)",a);break;case"GROUP:MONTH":this.put("^to_char(%c, '%s')",a,"YYYY-MM");break;case"GROUP:DAY":this.put("^to_char(%c, '%s')",a,"YYYY-MM-DD");break;default:a()}}dropDatabase(e){this.putCmd("^drop ^database %i ^with(^force)",e)}dropRecreatedTempTable(e){this.putCmd("^drop ^table %i ^cascade",e)}renameTable(e,a){this.putCmd("^alter ^table %f ^rename ^to %i",e,a)}renameSqlObject(e,a){this.putCmd("^alter %k %f ^rename ^to %i",this.getSqlObjectSqlName(e.objectTypeField),e,a)}renameColumn(e,a){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,a)}dropTable(e,a={}){this.put("^drop ^table"),a.testIfExists&&this.put(" ^if ^exists"),this.put(" %f",e),this.endCommand()}enableConstraints(e,a){this.putCmd("^alter ^table %f %k ^trigger ^all",e,a?"enable":"disable")}columnDefinition(e,a){e.autoIncrement?this.put("^serial"):super.columnDefinition(e,a)}changeColumn(e,a,n){e.columnName!=a.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,a.columnName),t(e,a)||this.putCmd("^alter ^table %f ^alter ^column %i ^type %s",e,a.columnName,a.dataType),e.defaultValue!=a.defaultValue&&(null==a.defaultValue?this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^default",a,a.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^set ^default %s",a,a.columnName,a.defaultValue)),e.notNull!=a.notNull&&(e.notNull||this.fillNewNotNullDefaults(a),a.notNull?this.putCmd("^alter ^table %f ^alter ^column %i ^set ^not ^null",a,a.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^not ^null",a,a.columnName))}putValue(e){!0===e?this.putRaw("true"):!1===e?this.putRaw("false"):super.putValue(e)}putByteArrayValue(e){this.putRaw(`e'\\\\x${n(e)}'`)}selectScopeIdentity(e){const a=e.columns&&e.columns.find((e=>e.autoIncrement));this.put("^SELECT currval(pg_get_serial_sequence('%f','%s'))",e,a?a.columnName:null)}callableTemplate(e){const a=e=>{for(const a of e.filter((e=>"RETURN"!=e.parameterMode)))"IN"==a.parameterMode?(this.put("%s %s := :%s",a.parameterName,a.dataType,a.parameterName),this.endCommand()):(this.put("%s %s",a.parameterName,a.dataType),this.endCommand());this.put("&n")},n=(e,a)=>{this.putCollection(a,e||[],(e=>{this.putRaw(e.parameterName)}))};"procedures"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),a(e.parameters),this.put("^begin&n"),this.put("^call %f(&>&n",e),n(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand()),"functions"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),this.put("result %s",e.returnType),this.endCommand(),a(e.parameters),this.put("^begin&n"),this.put("result := %f(&>&n",e),n(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand())}}},293:(e,a,n)=>{const{driverBase:t}=global.DBGATE_PACKAGES["dbgate-tools"],s=n(197),{postgreSplitterOptions:r}=n(994),i=["GEOGRAPHY","GEOMETRY"],o={rangeSelect:!0,ilike:!0,defaultSchemaName:"public",multipleSchema:!0,stringEscapeChar:"'",fallbackDataType:"varchar",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',stringAgg:!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,allowMultipleValuesInsert:!0,renameSqlObject:!0,filteredIndexes:!0,dropReferencesWhenDropTable:!0,requireStandaloneSelectForScopeIdentity:!0,predefinedDataTypes:["bigint","bigserial","bit","varbit","boolean","box","bytea","char(20)","varchar(250)","cidr","circle","date","double precision","inet","int","interval","json","jsonb","line","lseg","macaddr","macaddr8","money","numeric(10,2)","path","pg_lsn","pg_snapshot","point","polygon","real","smallint","smallserial","serial","text","time","timetz","timestamp","timestamptz","tsquery","tsvector","txid_snapshot","uuid","xml"],createColumnViewExpression:(e,a,n,t,s)=>a&&i.includes(a.toUpperCase())?{exprType:"call",func:"ST_AsText",alias:t||e,args:[{exprType:"column",columnName:e,source:n}]}:"uuid"==a?.toLowerCase()||"filter"==s&&a?.toLowerCase()?.startsWith("json")?{exprType:"unaryRaw",expr:{exprType:"column",source:n,columnName:e},afterSql:"::text",alias:t||e}:void 0},m={...t,supportsTransactions:!0,dumperClass:s,dialect:o,getQuerySplitterOptions:e=>"editor"==e?{...r,ignoreComments:!0,preventSingleLineSplit:!0}:"import"==e?{...r,copyFromStdin:!0}:r,readOnlySessions:!0,databaseUrlPlaceholder:"e.g. postgresql://user:password@localhost:5432/default_database",showConnectionField:(e,a)=>{const n=["useDatabaseUrl","authType","user","isReadOnly","useSeparateSchemas"];return"awsIam"==a.authType&&n.push("awsRegion","secretAccessKey","accessKeyId"),"socket"==a.authType?n.push("socketPath"):a.useDatabaseUrl?n.push("databaseUrl"):n.push("server","port"),"awsIam"!=a.authType&&"socket"!=a.authType&&n.push("password"),a.useDatabaseUrl||n.push("defaultDatabase","singleDatabase"),n.includes(e)},beforeConnectionSave:e=>{const{databaseUrl:a}=e;if(a){const n=a.match(/\/([^/]+)($|\?)/);return{...e,singleDatabase:!!n,defaultDatabase:n?n[1]:null}}return e},__analyserInternals:{},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:"CREATE TRIGGER trigger_name\nBEFORE INSERT ON table_name\nFOR EACH ROW\nEXECUTE FUNCTION function_name();"}],authTypeLabel:"Connection mode",defaultAuthTypeName:"hostPort",defaultSocketPath:"/var/run/postgresql",supportsDatabaseBackup:!0,supportsDatabaseRestore:!0,adaptDataType:e=>"datetime"==e?.toLowerCase()?"timestamp":e,getCliConnectionArgs(e){const a=[`--username=${e.user}`,`--host=${e.server}`];return e.port&&a.push(`--port=${e.port}`),a},getNativeOperationFormArgs:e=>"backup"==e?[{type:"checkbox",label:"Dump only data (without structure)",name:"dataOnly",default:!1},{type:"checkbox",label:"Dump schema only (no data)",name:"schemaOnly",default:!1},{type:"checkbox",label:"Use SQL insert instead of COPY for rows",name:"insert",default:!1},{type:"checkbox",label:"Prevent dumping of access privileges (grant/revoke)",name:"noPrivileges",default:!1},{type:"checkbox",label:"Do not output commands to set ownership of objects ",name:"noOwner",default:!1}]:null,backupDatabaseCommand(e,a,n){const{outputFile:t,database:s,selectedTables:r,skippedTables:i,options:o,argsFormat:m}=a,l=n.pg_dump||"pg_dump",c=this.getCliConnectionArgs(e,n);if(c.push(`--file=${t}`),c.push("--verbose"),c.push(s),o.dataOnly&&c.push("--data-only"),o.schemaOnly&&c.push("--schema-only"),o.insert&&c.push("--insert"),o.noPrivileges&&c.push("--no-privileges"),o.noOwner&&c.push("--no-owner"),i.length>0)for(const e of r)c.push("spawn"==m?`--table="${e.schemaName}"."${e.pureName}"`:`--table='"${e.schemaName}"."${e.pureName}"'`);return{command:l,args:c,env:{PGPASSWORD:e.password}}},restoreDatabaseCommand(e,a,n){const{inputFile:t,database:s}=a,r=n.psql||"psql",i=this.getCliConnectionArgs(e,n);return i.push(`--dbname=${s}`),i.push(`--file=${t}`),{command:r,args:i,env:{PGPASSWORD:e.password}}},transformNativeCommandMessage:e=>e.message.startsWith("INSERT ")||"SET"==e.message?null:e.message.startsWith("pg_dump: processing data for table")?{...e,severity:"info",message:e.message.replace("pg_dump: processing data for table","Processing table")}:e.message.toLowerCase().includes("error:")?{...e,severity:"error"}:{...e,severity:"debug"}},l={...m,engine:"postgres@dbgate-plugin-postgres",title:"PostgreSQL",defaultPort:5432,dialect:{...o,materializedViews:!0},dialectByVersion:e=>e?{...o,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3),isFipsComplianceOn:e.isFipsComplianceOn}:o},c={...m,engine:"cockroach@dbgate-plugin-postgres",title:"CockroachDB",defaultPort:26257,dialect:{...o,materializedViews:!0,dropColumnDependencies:["primaryKey","dependencies"],dropPrimaryKey:!1},__analyserInternals:{}},p={...m,dialect:{...o,stringAgg:!1},__analyserInternals:{skipIndexes:!0},engine:"redshift@dbgate-plugin-postgres",title:"Amazon Redshift",defaultPort:5439,premiumOnly:!0,databaseUrlPlaceholder:"e.g. redshift-cluster-1.xxxx.redshift.amazonaws.com:5439/dev",showConnectionField:(e,a)=>["databaseUrl","user","password","isReadOnly","useSeparateSchemas"].includes(e),beforeConnectionSave:e=>{const{databaseUrl:a}=e;if(a){const n=a.match(/\/([^/]+)$/);if(n)return{...e,singleDatabase:!0,defaultDatabase:n[1]}}return e}};e.exports=[l,c,p]},825:e=>{"use strict";e.exports=require("lodash")},449:e=>{"use strict";e.exports=require("pg")},269:e=>{"use strict";e.exports=require("pg-copy-streams")},158:e=>{"use strict";e.exports=require("wkx")},203:e=>{"use strict";e.exports=require("stream")}},a={},n=function n(t){var s=a[t];if(void 0!==s)return s.exports;var r=a[t]={exports:{}};return e[t](r,r.exports,n),r.exports}(237);module.exports=n})();
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,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:a,testEqualTypes:s}=window.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{transform(e,t){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^extract(^year ^from %c)",t);break;case"MONTH":this.put("^extract(^month ^from %c)",t);break;case"DAY":this.put("^extract(^day ^from %c)",t);break;case"GROUP:MONTH":this.put("^to_char(%c, '%s')",t,"YYYY-MM");break;case"GROUP:DAY":this.put("^to_char(%c, '%s')",t,"YYYY-MM-DD");break;default:t()}}dropDatabase(e){this.putCmd("^drop ^database %i ^with(^force)",e)}dropRecreatedTempTable(e){this.putCmd("^drop ^table %i ^cascade",e)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}renameSqlObject(e,t){this.putCmd("^alter %k %f ^rename ^to %i",this.getSqlObjectSqlName(e.objectTypeField),e,t)}renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}dropTable(e,t={}){this.put("^drop ^table"),t.testIfExists&&this.put(" ^if ^exists"),this.put(" %f",e),this.endCommand()}enableConstraints(e,t){this.putCmd("^alter ^table %f %k ^trigger ^all",e,t?"enable":"disable")}columnDefinition(e,t){e.autoIncrement?this.put("^serial"):super.columnDefinition(e,t)}changeColumn(e,t,a){e.columnName!=t.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t.columnName),s(e,t)||this.putCmd("^alter ^table %f ^alter ^column %i ^type %s",e,t.columnName,t.dataType),e.defaultValue!=t.defaultValue&&(null==t.defaultValue?this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^default",t,t.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^set ^default %s",t,t.columnName,t.defaultValue)),e.notNull!=t.notNull&&(e.notNull||this.fillNewNotNullDefaults(t),t.notNull?this.putCmd("^alter ^table %f ^alter ^column %i ^set ^not ^null",t,t.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^not ^null",t,t.columnName))}putValue(e){!0===e?this.putRaw("true"):!1===e?this.putRaw("false"):super.putValue(e)}putByteArrayValue(e){this.putRaw(`e'\\\\x${a(e)}'`)}selectScopeIdentity(e){const t=e.columns&&e.columns.find((e=>e.autoIncrement));this.put("^SELECT currval(pg_get_serial_sequence('%f','%s'))",e,t?t.columnName:null)}callableTemplate(e){const t=e=>{for(const t of e.filter((e=>"RETURN"!=e.parameterMode)))"IN"==t.parameterMode?(this.put("%s %s := :%s",t.parameterName,t.dataType,t.parameterName),this.endCommand()):(this.put("%s %s",t.parameterName,t.dataType),this.endCommand());this.put("&n")},a=(e,t)=>{this.putCollection(t,e||[],(e=>{this.putRaw(e.parameterName)}))};"procedures"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),t(e.parameters),this.put("^begin&n"),this.put("^call %f(&>&n",e),a(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand()),"functions"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),this.put("result %s",e.returnType),this.endCommand(),t(e.parameters),this.put("^begin&n"),this.put("result := %f(&>&n",e),a(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand())}}},378:(e,t,a)=>{const{driverBase:s}=window.DBGATE_PACKAGES["dbgate-tools"],n=a(56),{postgreSplitterOptions:i}=a(994),r=["GEOGRAPHY","GEOMETRY"],l={rangeSelect:!0,ilike:!0,defaultSchemaName:"public",multipleSchema:!0,stringEscapeChar:"'",fallbackDataType:"varchar",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',stringAgg:!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,allowMultipleValuesInsert:!0,renameSqlObject:!0,filteredIndexes:!0,dropReferencesWhenDropTable:!0,requireStandaloneSelectForScopeIdentity:!0,predefinedDataTypes:["bigint","bigserial","bit","varbit","boolean","box","bytea","char(20)","varchar(250)","cidr","circle","date","double precision","inet","int","interval","json","jsonb","line","lseg","macaddr","macaddr8","money","numeric(10,2)","path","pg_lsn","pg_snapshot","point","polygon","real","smallint","smallserial","serial","text","time","timetz","timestamp","timestamptz","tsquery","tsvector","txid_snapshot","uuid","xml"],createColumnViewExpression:(e,t,a,s,n)=>t&&r.includes(t.toUpperCase())?{exprType:"call",func:"ST_AsText",alias:s||e,args:[{exprType:"column",columnName:e,source:a}]}:"uuid"==t?.toLowerCase()||"filter"==n&&t?.toLowerCase()?.startsWith("json")?{exprType:"unaryRaw",expr:{exprType:"column",source:a,columnName:e},afterSql:"::text",alias:s||e}:void 0},o={...s,dumperClass:n,dialect:l,getQuerySplitterOptions:e=>"editor"==e?{...i,ignoreComments:!0,preventSingleLineSplit:!0}:"import"==e?{...i,copyFromStdin:!0}:i,readOnlySessions:!0,databaseUrlPlaceholder:"e.g. postgresql://user:password@localhost:5432/default_database",showConnectionField:(e,t)=>{const a=["useDatabaseUrl","authType","user","isReadOnly","useSeparateSchemas"];return"awsIam"==t.authType&&a.push("awsRegion","secretAccessKey","accessKeyId"),"socket"==t.authType?a.push("socketPath"):t.useDatabaseUrl?a.push("databaseUrl"):a.push("server","port"),"awsIam"!=t.authType&&"socket"!=t.authType&&a.push("password"),t.useDatabaseUrl||a.push("defaultDatabase","singleDatabase"),a.includes(e)},beforeConnectionSave:e=>{const{databaseUrl:t}=e;if(t){const a=t.match(/\/([^/]+)($|\?)/);return{...e,singleDatabase:!!a,defaultDatabase:a?a[1]:null}}return e},__analyserInternals:{},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:"CREATE TRIGGER trigger_name\nBEFORE INSERT ON table_name\nFOR EACH ROW\nEXECUTE FUNCTION function_name();"}],authTypeLabel:"Connection mode",defaultAuthTypeName:"hostPort",defaultSocketPath:"/var/run/postgresql"},p={...o,engine:"postgres@dbgate-plugin-postgres",title:"PostgreSQL",defaultPort:5432,dialect:{...l,materializedViews:!0},dialectByVersion:e=>e?{...l,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3),isFipsComplianceOn:e.isFipsComplianceOn}:l},u={...o,engine:"cockroach@dbgate-plugin-postgres",title:"CockroachDB",defaultPort:26257,dialect:{...l,materializedViews:!0,dropColumnDependencies:["primaryKey","dependencies"],dropPrimaryKey:!1},__analyserInternals:{}},d={...o,dialect:{...l,stringAgg:!1},__analyserInternals:{skipIndexes:!0},engine:"redshift@dbgate-plugin-postgres",title:"Amazon Redshift",defaultPort:5439,premiumOnly:!0,databaseUrlPlaceholder:"e.g. redshift-cluster-1.xxxx.redshift.amazonaws.com:5439/dev",showConnectionField:(e,t)=>["databaseUrl","user","password","isReadOnly","useSeparateSchemas"].includes(e),beforeConnectionSave:e=>{const{databaseUrl:t}=e;if(t){const a=t.match(/\/([^/]+)$/);if(a)return{...e,singleDatabase:!0,defaultDatabase:a[1]}}return e}};e.exports=[p,u,d]}},t={};function a(s){var n=t[s];if(void 0!==n)return n.exports;var i=t[s]={exports:{}};return e[s](i,i.exports,a),i.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{"use strict";a.r(s),a.d(s,{default:()=>t});var e=a(378);const t={packageName:"dbgate-plugin-postgres",drivers:a.n(e)()}})(),plugin=s})();
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,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:a,testEqualTypes:s}=window.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{transform(e,t){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^extract(^year ^from %c)",t);break;case"MONTH":this.put("^extract(^month ^from %c)",t);break;case"DAY":this.put("^extract(^day ^from %c)",t);break;case"GROUP:MONTH":this.put("^to_char(%c, '%s')",t,"YYYY-MM");break;case"GROUP:DAY":this.put("^to_char(%c, '%s')",t,"YYYY-MM-DD");break;default:t()}}dropDatabase(e){this.putCmd("^drop ^database %i ^with(^force)",e)}dropRecreatedTempTable(e){this.putCmd("^drop ^table %i ^cascade",e)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}renameSqlObject(e,t){this.putCmd("^alter %k %f ^rename ^to %i",this.getSqlObjectSqlName(e.objectTypeField),e,t)}renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}dropTable(e,t={}){this.put("^drop ^table"),t.testIfExists&&this.put(" ^if ^exists"),this.put(" %f",e),this.endCommand()}enableConstraints(e,t){this.putCmd("^alter ^table %f %k ^trigger ^all",e,t?"enable":"disable")}columnDefinition(e,t){e.autoIncrement?this.put("^serial"):super.columnDefinition(e,t)}changeColumn(e,t,a){e.columnName!=t.columnName&&this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t.columnName),s(e,t)||this.putCmd("^alter ^table %f ^alter ^column %i ^type %s",e,t.columnName,t.dataType),e.defaultValue!=t.defaultValue&&(null==t.defaultValue?this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^default",t,t.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^set ^default %s",t,t.columnName,t.defaultValue)),e.notNull!=t.notNull&&(e.notNull||this.fillNewNotNullDefaults(t),t.notNull?this.putCmd("^alter ^table %f ^alter ^column %i ^set ^not ^null",t,t.columnName):this.putCmd("^alter ^table %f ^alter ^column %i ^drop ^not ^null",t,t.columnName))}putValue(e){!0===e?this.putRaw("true"):!1===e?this.putRaw("false"):super.putValue(e)}putByteArrayValue(e){this.putRaw(`e'\\\\x${a(e)}'`)}selectScopeIdentity(e){const t=e.columns&&e.columns.find((e=>e.autoIncrement));this.put("^SELECT currval(pg_get_serial_sequence('%f','%s'))",e,t?t.columnName:null)}callableTemplate(e){const t=e=>{for(const t of e.filter((e=>"RETURN"!=e.parameterMode)))"IN"==t.parameterMode?(this.put("%s %s := :%s",t.parameterName,t.dataType,t.parameterName),this.endCommand()):(this.put("%s %s",t.parameterName,t.dataType),this.endCommand());this.put("&n")},a=(e,t)=>{this.putCollection(t,e||[],(e=>{this.putRaw(e.parameterName)}))};"procedures"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),t(e.parameters),this.put("^begin&n"),this.put("^call %f(&>&n",e),a(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand()),"functions"==e.objectTypeField&&(this.put("^do $$&n"),this.put("^declare&n"),this.put("result %s",e.returnType),this.endCommand(),t(e.parameters),this.put("^begin&n"),this.put("result := %f(&>&n",e),a(e.parameters,",&n"),this.put("&<&n)"),this.endCommand(),this.put("&n"),this.put("^end $$"),this.endCommand())}}},378:(e,t,a)=>{const{driverBase:s}=window.DBGATE_PACKAGES["dbgate-tools"],n=a(56),{postgreSplitterOptions:r}=a(994),i=["GEOGRAPHY","GEOMETRY"],l={rangeSelect:!0,ilike:!0,defaultSchemaName:"public",multipleSchema:!0,stringEscapeChar:"'",fallbackDataType:"varchar",anonymousPrimaryKey:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["dependencies"],quoteIdentifier:e=>'"'+e+'"',stringAgg:!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,allowMultipleValuesInsert:!0,renameSqlObject:!0,filteredIndexes:!0,dropReferencesWhenDropTable:!0,requireStandaloneSelectForScopeIdentity:!0,predefinedDataTypes:["bigint","bigserial","bit","varbit","boolean","box","bytea","char(20)","varchar(250)","cidr","circle","date","double precision","inet","int","interval","json","jsonb","line","lseg","macaddr","macaddr8","money","numeric(10,2)","path","pg_lsn","pg_snapshot","point","polygon","real","smallint","smallserial","serial","text","time","timetz","timestamp","timestamptz","tsquery","tsvector","txid_snapshot","uuid","xml"],createColumnViewExpression:(e,t,a,s,n)=>t&&i.includes(t.toUpperCase())?{exprType:"call",func:"ST_AsText",alias:s||e,args:[{exprType:"column",columnName:e,source:a}]}:"uuid"==t?.toLowerCase()||"filter"==n&&t?.toLowerCase()?.startsWith("json")?{exprType:"unaryRaw",expr:{exprType:"column",source:a,columnName:e},afterSql:"::text",alias:s||e}:void 0},o={...s,supportsTransactions:!0,dumperClass:n,dialect:l,getQuerySplitterOptions:e=>"editor"==e?{...r,ignoreComments:!0,preventSingleLineSplit:!0}:"import"==e?{...r,copyFromStdin:!0}:r,readOnlySessions:!0,databaseUrlPlaceholder:"e.g. postgresql://user:password@localhost:5432/default_database",showConnectionField:(e,t)=>{const a=["useDatabaseUrl","authType","user","isReadOnly","useSeparateSchemas"];return"awsIam"==t.authType&&a.push("awsRegion","secretAccessKey","accessKeyId"),"socket"==t.authType?a.push("socketPath"):t.useDatabaseUrl?a.push("databaseUrl"):a.push("server","port"),"awsIam"!=t.authType&&"socket"!=t.authType&&a.push("password"),t.useDatabaseUrl||a.push("defaultDatabase","singleDatabase"),a.includes(e)},beforeConnectionSave:e=>{const{databaseUrl:t}=e;if(t){const a=t.match(/\/([^/]+)($|\?)/);return{...e,singleDatabase:!!a,defaultDatabase:a?a[1]:null}}return e},__analyserInternals:{},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:"CREATE TRIGGER trigger_name\nBEFORE INSERT ON table_name\nFOR EACH ROW\nEXECUTE FUNCTION function_name();"}],authTypeLabel:"Connection mode",defaultAuthTypeName:"hostPort",defaultSocketPath:"/var/run/postgresql",supportsDatabaseBackup:!0,supportsDatabaseRestore:!0,adaptDataType:e=>"datetime"==e?.toLowerCase()?"timestamp":e,getCliConnectionArgs(e){const t=[`--username=${e.user}`,`--host=${e.server}`];return e.port&&t.push(`--port=${e.port}`),t},getNativeOperationFormArgs:e=>"backup"==e?[{type:"checkbox",label:"Dump only data (without structure)",name:"dataOnly",default:!1},{type:"checkbox",label:"Dump schema only (no data)",name:"schemaOnly",default:!1},{type:"checkbox",label:"Use SQL insert instead of COPY for rows",name:"insert",default:!1},{type:"checkbox",label:"Prevent dumping of access privileges (grant/revoke)",name:"noPrivileges",default:!1},{type:"checkbox",label:"Do not output commands to set ownership of objects ",name:"noOwner",default:!1}]:null,backupDatabaseCommand(e,t,a){const{outputFile:s,database:n,selectedTables:r,skippedTables:i,options:l,argsFormat:o}=t,p=a.pg_dump||"pg_dump",u=this.getCliConnectionArgs(e,a);if(u.push(`--file=${s}`),u.push("--verbose"),u.push(n),l.dataOnly&&u.push("--data-only"),l.schemaOnly&&u.push("--schema-only"),l.insert&&u.push("--insert"),l.noPrivileges&&u.push("--no-privileges"),l.noOwner&&u.push("--no-owner"),i.length>0)for(const e of r)u.push("spawn"==o?`--table="${e.schemaName}"."${e.pureName}"`:`--table='"${e.schemaName}"."${e.pureName}"'`);return{command:p,args:u,env:{PGPASSWORD:e.password}}},restoreDatabaseCommand(e,t,a){const{inputFile:s,database:n}=t,r=a.psql||"psql",i=this.getCliConnectionArgs(e,a);return i.push(`--dbname=${n}`),i.push(`--file=${s}`),{command:r,args:i,env:{PGPASSWORD:e.password}}},transformNativeCommandMessage:e=>e.message.startsWith("INSERT ")||"SET"==e.message?null:e.message.startsWith("pg_dump: processing data for table")?{...e,severity:"info",message:e.message.replace("pg_dump: processing data for table","Processing table")}:e.message.toLowerCase().includes("error:")?{...e,severity:"error"}:{...e,severity:"debug"}},p={...o,engine:"postgres@dbgate-plugin-postgres",title:"PostgreSQL",defaultPort:5432,dialect:{...l,materializedViews:!0},dialectByVersion:e=>e?{...l,materializedViews:e&&null!=e.versionMajor&&null!=e.versionMinor&&(e.versionMajor>9||9==e.versionMajor||e.versionMinor>=3),isFipsComplianceOn:e.isFipsComplianceOn}:l},u={...o,engine:"cockroach@dbgate-plugin-postgres",title:"CockroachDB",defaultPort:26257,dialect:{...l,materializedViews:!0,dropColumnDependencies:["primaryKey","dependencies"],dropPrimaryKey:!1},__analyserInternals:{}},m={...o,dialect:{...l,stringAgg:!1},__analyserInternals:{skipIndexes:!0},engine:"redshift@dbgate-plugin-postgres",title:"Amazon Redshift",defaultPort:5439,premiumOnly:!0,databaseUrlPlaceholder:"e.g. redshift-cluster-1.xxxx.redshift.amazonaws.com:5439/dev",showConnectionField:(e,t)=>["databaseUrl","user","password","isReadOnly","useSeparateSchemas"].includes(e),beforeConnectionSave:e=>{const{databaseUrl:t}=e;if(t){const a=t.match(/\/([^/]+)$/);if(a)return{...e,singleDatabase:!0,defaultDatabase:a[1]}}return e}};e.exports=[p,u,m]}},t={};function a(s){var n=t[s];if(void 0!==n)return n.exports;var r=t[s]={exports:{}};return e[s](r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{"use strict";a.r(s),a.d(s,{default:()=>t});var e=a(378);const t={packageName:"dbgate-plugin-postgres",drivers:a.n(e)()}})(),plugin=s})();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-plugin-postgres",
3
3
  "main": "dist/backend.js",
4
- "version": "6.2.0",
4
+ "version": "6.3.0",
5
5
  "license": "GPL-3.0",
6
6
  "description": "PostgreSQL connector plugin for DbGate",
7
7
  "homepage": "https://dbgate.org",
@@ -38,7 +38,7 @@
38
38
  "wkx": "^0.5.0",
39
39
  "pg-copy-streams": "^6.0.6",
40
40
  "dbgate-query-splitter": "^4.11.3",
41
- "dbgate-tools": "^6.2.0",
41
+ "dbgate-tools": "^6.3.0",
42
42
  "lodash": "^4.17.21",
43
43
  "pg": "^8.11.5"
44
44
  }