dbgate-plugin-postgres 6.6.8 → 6.6.10
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 +1 -1
- package/package.json +2 -2
package/dist/backend.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={994:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.firebirdSplitterOptions=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,splitByEmptyLine:!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:{"'":"'",'"':'"'}}),a.firebirdSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},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:"DBGM-00241 Loading tables"});const e=await this.analyserQuery(this.driver.dialect.stringAgg?"tableModifications":"tableList",["tables"]);this.feedback({analysingMessage:"DBGM-00242 Loading columns"});const a=await this.analyserQuery("columns",["tables","views"]);this.feedback({analysingMessage:"DBGM-00243 Loading primary keys"});const n=await this.analyserQuery("primaryKeys",["tables"]);let s=null;this.feedback({analysingMessage:"DBGM-00244 Loading foreign key constraints"}),this.feedback({analysingMessage:"DBGM-00245 Loading foreign key refs"});const i=await this.analyserQuery("foreignKeys",["tables"]);this.feedback({analysingMessage:"DBGM-00246 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:"DBGM-00247 Loading views"});const l=await this.analyserQuery("views",["views"]);this.feedback({analysingMessage:"DBGM-00248 Loading materialized views"});const _=this.driver.dialect.materializedViews?await this.analyserQuery("matviews",["matviews"]):null;this.feedback({analysingMessage:"DBGM-00249 Loading materialized view columns"});const d=this.driver.dialect.materializedViews?await this.analyserQuery("matviewColumns",["matviews"]):null;this.feedback({analysingMessage:"DBGM-00250 Loading routines"});const h=await this.analyserQuery("routines",["procedures","functions"]);this.feedback({analysingMessage:"DBGM-00251 Loading routine parameters"});const g=await this.analyserQuery("proceduresParameters");this.feedback({analysingMessage:"DBGM-00252 Loading indexes"});const b=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexes",["tables"]);this.feedback({analysingMessage:"DBGM-00253 Loading index columns"});const y=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexcols",["tables"]);this.feedback({analysingMessage:"DBGM-00254 Loading unique names"});const f=await this.analyserQuery("uniqueNames",["tables"]);let N={rows:[]};l.rows.find((e=>"geometry_columns"==e.pure_name&&"public"==e.schema_name))&&(this.feedback({analysingMessage:"DBGM-00255 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:"DBGM-00256 Loading geography columns"}),E=await this.analyserQuery("geographyColumns",["tables"])),this.feedback({analysingMessage:"DBGM-00257 Loading triggers"});const O=await this.analyserQuery("triggers");this.feedback({analysingMessage:"DBGM-00258 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}))),S=n.rows.map((e=>({pureName:e.pure_name,schemaName:e.schema_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name}))),T=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)),{}),w=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,S),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=>y.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=>y.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(T[`${e.schema_name}.${e.pure_name}`])}) LANGUAGE ${e.language}\nAS\n$$\n${e.definition}\n$$`,contentHash:e.hash_code,parameters:T[`${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(w[`${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:w[`${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({...this.getLogDbInfo(),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},"DBGM-00141 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),c=n(926),{getLogger:p,createBulkInsertStreamBase:u,makeUniqueColumnNames:_,extractDbNameFromComposite:d,extractErrorLogData:h}=global.DBGATE_PACKAGES["dbgate-tools"];let g;const b=p("postreDriver");function y(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]=y(e[a]))}return e}function N(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 _(t),t}function E(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)),m.types.setTypeParser(20,"text",(e=>{const a=parseInt(e);return Number.isSafeInteger(a)?a:BigInt(e)}));const O=r.map((e=>({...e,analyserClass:i,async connect(a){const{conid:n,engine:s,server:r,port:i,user:o,password:l,database:c,databaseUrl:p,useDatabaseUrl:u,ssl:_,isReadOnly:h,authType:b,socketPath:y}=a;let f=null,N=null;if("awsIam"==b&&(N=await g.getAwsIamToken(a)),"redshift@dbgate-plugin-postgres"==s){let e=p;e&&e.startsWith("jdbc:redshift://")&&(e=e.substring(16)),e=o&&l?`postgres://${o}:${l}@${e}`:o?`postgres://${o}@${e}`:`postgres://${e}`,f={connectionString:e}}else f=u?{connectionString:p,application_name:"DbGate"}:{host:"socket"==b?y||e.defaultSocketPath:r,port:"socket"==b?null:i,user:o,password:N||l,database:d(c)||"postgres",ssl:"awsIam"==b?_||{rejectUnauthorized:!1}:_,application_name:"DbGate"};const E=new m.Client(f);await E.connect();const O={client:E,database:c,conid:n},C=await this.query(O,"SELECT oid, typname FROM pg_type WHERE typname in ('geography')"),S=t.fromPairs(C.rows.map((e=>[e.oid,e.typname])));return O.typeIdToName=S,h&&await this.query(O,"SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY"),O},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=N(n,e);return{rows:(n.rows||[]).map((e=>E(e,t))),columns:t}},stream(e,a,n){const s=e=>{const{message:a,where:t}=e;n.info({message:a,procedure:t,time:new Date,severity:"info",detail:e})},r=new m.Query({text:a,rowMode:"array"});let i=!1,o=null;e.client.on("notice",s),r.on("row",(a=>{if(i||(columns=N(r._result,e),columns&&columns.length>0&&n.recordset(columns),i=!0),!o){const a=Object.values(e.typeIdToName??{});o=columns.filter((e=>a.includes(e.dataTypeName)))}const t=f(E(a,columns),o);n.row(t)})),r.on("end",(()=>{const{command:a,rowCount:o}=r._result||{};"SELECT"!=a&&t.isNumber(o)&&n.info({message:`${o} rows affected`,time:new Date,severity:"info"}),i||(columns=N(r._result,e),columns&&columns.length>0&&n.recordset(columns),i=!0),e.client.off("notice",s),n.done()})),r.on("error",(t=>{b.error(h(t,this.getLogDbInfo(e)),"DBGM-00201 Stream error");const{message:r,position:i,procName:o}=t;let m=null;i&&(m=a.substring(0,parseInt(i)).replace(/[^\n]/g,"").length),n.info({message:r,line:m,procedure:o,time:new Date,severity:"error"}),e.client.off("notice",s),n.done()})),e.client.query(r)},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=N(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(E(a,i),o);l.write(s)})),t.on("end",(()=>{r||(i=N(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 u(this,s,e,a,n)},async serverSummary(e){const[a,n,t]=await Promise.all([this.listProcesses(e),this.listVariables(e),this.listDatabasesFull(e)]);return{processes:a,variables:n,databases:{rows:t,columns:[{header:"Name",fieldName:"name",type:"data"},{header:"Size on disk",fieldName:"sizeOnDisk",type:"fileSize"}]}}},async killProcess(e,a){return await this.query(e,`SELECT pg_terminate_backend(${parseInt(a)})`)},async listDatabasesFull(e){const{rows:a}=await this.query(e,c.listDatabases);return a},async listDatabases(e){const{rows:a}=await this.query(e,"SELECT datname AS name FROM pg_database WHERE datistemplate = false");return a},async listVariables(e){return(await this.query(e,c.listVariables)).rows.map((e=>({variable:e.variable,value:e.value})))},async listProcesses(e){return(await this.query(e,c.listProcesses)).rows.map((e=>({processId:e.processId,connectionId:e.connectionId,client:e.client,operation:e.operation,namespace:null,command:e.operation,runningTime:e.runningTime?Math.max(Number(e.runningTime),0):null,state:e.state,waitingFor:e.waitingFor,locks:null,progress:null})))},getAuthTypes(){const e=[{title:"Host and port",name:"hostPort"},{title:"Socket",name:"socket"}];return g.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 b.debug(this.getLogDbInfo(e),`DBGM-00142 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))})));O.initialize=e=>{g=e.authProxy},e.exports=O},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'},883: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),y=n(477),f=n(754),N=n(958),E=n(377),O=n(264),C=n(447),S=n(823),T=n(883);e.exports={columns:t,tableModifications:s,tableList:r,viewModifications:i,primaryKeys:m,fk_keyColumnUsage:T,foreignKeys:N,views:l,routines:p,routineModifications:u,matviews:c,matviewModifications:o,matviewColumns:_,indexes:d,indexcols:h,uniqueNames:g,geometryColumns:b,geographyColumns:y,proceduresParameters:f,triggers:E,listDatabases:O,listVariables:C,listProcesses:S}},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'},264:e=>{e.exports='\nSELECT \n "datname" AS "name",\n pg_database_size("datname") AS "sizeOnDisk",\n 0 AS "tableCount",\n 0 AS "viewCount", \n 0 AS "matviewCount"\nFROM "pg_database" \nWHERE "datistemplate" = false\nORDER BY pg_database_size("datname") DESC\n'},823:e=>{e.exports='\nSELECT \n "pid" AS "processId",\n "application_name" AS "client",\n "client_addr" AS "connectionId",\n "state" AS "state",\n "query" AS "operation",\n EXTRACT(EPOCH FROM (NOW() - "state_change")) AS "runningTime",\n "wait_event" IS NOT NULL AS "waitingFor"\nFROM "pg_stat_activity" \nWHERE "state" IS NOT NULL\nORDER BY "pid"\n'},447:e=>{e.exports='\nSELECT "name" AS "variable", "setting" AS "value" \nFROM "pg_settings" \nORDER BY "name"\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},{type:"text",label:"Custom arguments",name:"customArgs"}]: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}"'`);if(o.customArgs?.trim()){const e=o.customArgs.split(/\s+/).filter((e=>""!=e.trim()));c.push(...e)}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,supportsServerSummary:!0,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,supportsServerSummary:!0,engine:"cockroach@dbgate-plugin-postgres",title:"CockroachDB",defaultPort:26257,dialect:{...o,materializedViews:!0,dropColumnDependencies:["primaryKey","dependencies"],dropPrimaryKey:!1},__analyserInternals:{}},p={...m,supportsServerSummary:!0,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.firebirdSplitterOptions=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,splitByEmptyLine:!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:{"'":"'",'"':'"'}}),a.firebirdSplitterOptions=Object.assign(Object.assign({},a.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},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:"DBGM-00241 Loading tables"});const e=await this.analyserQuery(this.driver.dialect.stringAgg?"tableModifications":"tableList",["tables"]);this.feedback({analysingMessage:"DBGM-00242 Loading columns"});const a=await this.analyserQuery("columns",["tables","views"]);this.feedback({analysingMessage:"DBGM-00243 Loading primary keys"});const n=await this.analyserQuery("primaryKeys",["tables"]);let s=null;this.feedback({analysingMessage:"DBGM-00244 Loading foreign key constraints"}),this.feedback({analysingMessage:"DBGM-00245 Loading foreign key refs"});const i=await this.analyserQuery("foreignKeys",["tables"]);this.feedback({analysingMessage:"DBGM-00246 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:"DBGM-00247 Loading views"});const l=await this.analyserQuery("views",["views"]);this.feedback({analysingMessage:"DBGM-00248 Loading materialized views"});const _=this.driver.dialect.materializedViews?await this.analyserQuery("matviews",["matviews"]):null;this.feedback({analysingMessage:"DBGM-00249 Loading materialized view columns"});const d=this.driver.dialect.materializedViews?await this.analyserQuery("matviewColumns",["matviews"]):null;this.feedback({analysingMessage:"DBGM-00250 Loading routines"});const h=await this.analyserQuery("routines",["procedures","functions"]);this.feedback({analysingMessage:"DBGM-00251 Loading routine parameters"});const g=await this.analyserQuery("proceduresParameters");this.feedback({analysingMessage:"DBGM-00252 Loading indexes"});const b=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexes",["tables"]);this.feedback({analysingMessage:"DBGM-00253 Loading index columns"});const f=this.driver.__analyserInternals.skipIndexes?{rows:[]}:await this.analyserQuery("indexcols",["tables"]);this.feedback({analysingMessage:"DBGM-00254 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:"DBGM-00255 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:"DBGM-00256 Loading geography columns"}),E=await this.analyserQuery("geographyColumns",["tables"])),this.feedback({analysingMessage:"DBGM-00257 Loading triggers"});const O=await this.analyserQuery("triggers");this.feedback({analysingMessage:"DBGM-00258 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}))),S=n.rows.map((e=>({pureName:e.pure_name,schemaName:e.schema_name,constraintSchema:e.constraint_schema,constraintName:e.constraint_name,columnName:e.column_name}))),T=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)),{}),w=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,S),foreignKeys:r.extractForeignKeys(n,C),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(T[`${e.schema_name}.${e.pure_name}`])}) LANGUAGE ${e.language}\nAS\n$$\n${e.definition}\n$$`,contentHash:e.hash_code,parameters:T[`${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(w[`${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:w[`${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({...this.getLogDbInfo(),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},"DBGM-00141 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),c=n(926),{getLogger:p,createBulkInsertStreamBase:u,makeUniqueColumnNames:_,extractDbNameFromComposite:d,extractErrorLogData:h,getConflictingColumnNames:g}=global.DBGATE_PACKAGES["dbgate-tools"];let b;const f=p("postreDriver");function y(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]=y(e[a]))}return e}function E(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],tableId:e.tableID})));return _(t),t}function O(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)),m.types.setTypeParser(20,"text",(e=>{const a=parseInt(e);return Number.isSafeInteger(a)?a:BigInt(e)}));const C=r.map((e=>({...e,analyserClass:i,async connect(a){const{conid:n,engine:s,server:r,port:i,user:o,password:l,database:c,databaseUrl:p,useDatabaseUrl:u,ssl:_,isReadOnly:h,authType:g,socketPath:f}=a;let y=null,N=null;if("awsIam"==g&&(N=await b.getAwsIamToken(a)),"redshift@dbgate-plugin-postgres"==s){let e=p;e&&e.startsWith("jdbc:redshift://")&&(e=e.substring(16)),e=o&&l?`postgres://${o}:${l}@${e}`:o?`postgres://${o}@${e}`:`postgres://${e}`,y={connectionString:e}}else y=u?{connectionString:p,application_name:"DbGate"}:{host:"socket"==g?f||e.defaultSocketPath:r,port:"socket"==g?null:i,user:o,password:N||l,database:d(c)||"postgres",ssl:"awsIam"==g?_||{rejectUnauthorized:!1}:_,application_name:"DbGate"};const E=new m.Client(y);await E.connect();const O={client:E,database:c,conid:n},C=await this.query(O,"SELECT oid, typname FROM pg_type WHERE typname in ('geography')"),S=t.fromPairs(C.rows.map((e=>[e.oid,e.typname])));return O.typeIdToName=S,h&&await this.query(O,"SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY"),O},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=E(n,e);return{rows:(n.rows||[]).map((e=>O(e,t))),columns:t}},stream(e,a,n){const s=e=>{const{message:a,where:t}=e;n.info({message:a,procedure:t,time:new Date,severity:"info",detail:e})},r=new m.Query({text:a,rowMode:"array"});let i=!1,o=null;e.client.on("notice",s),r.on("row",(a=>{if(i||(columns=E(r._result,e),columns&&columns.length>0&&n.recordset(columns),i=!0),!o){const a=Object.values(e.typeIdToName??{});o=columns.filter((e=>a.includes(e.dataTypeName)))}const t=N(O(a,columns),o);n.row(t)})),r.on("end",(()=>{const{command:a,rowCount:o}=r._result||{};"SELECT"!=a&&t.isNumber(o)&&n.info({message:`${o} rows affected`,time:new Date,severity:"info",rowsAffected:o}),i||(columns=E(r._result,e),columns&&columns.length>0&&n.recordset(columns),i=!0),e.client.off("notice",s),n.done()})),r.on("error",(t=>{f.error(h(t,this.getLogDbInfo(e)),"DBGM-00201 Stream error");const{message:r,position:i,procName:o}=t;let m=null;i&&(m=a.substring(0,parseInt(i)).replace(/[^\n]/g,"").length),n.info({message:r,line:m,procedure:o,time:new Date,severity:"error"}),e.client.off("notice",s),n.done()})),e.client.query(r)},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=E(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(O(a,i),o);l.write(s)})),t.on("end",(()=>{r||(i=E(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 u(this,s,e,a,n)},async serverSummary(e){const[a,n,t]=await Promise.all([this.listProcesses(e),this.listVariables(e),this.listDatabasesFull(e)]);return{processes:a,variables:n,databases:{rows:t,columns:[{header:"Name",fieldName:"name",type:"data"},{header:"Size on disk",fieldName:"sizeOnDisk",type:"fileSize"}]}}},async killProcess(e,a){return await this.query(e,`SELECT pg_terminate_backend(${parseInt(a)})`)},async listDatabasesFull(e){const{rows:a}=await this.query(e,c.listDatabases);return a},async listDatabases(e){const{rows:a}=await this.query(e,"SELECT datname AS name FROM pg_database WHERE datistemplate = false");return a},async listVariables(e){return(await this.query(e,c.listVariables)).rows.map((e=>({variable:e.variable,value:e.value})))},async listProcesses(e){return(await this.query(e,c.listProcesses)).rows.map((e=>({processId:e.processId,connectionId:e.connectionId,client:e.client,operation:e.operation,namespace:null,command:e.operation,runningTime:e.runningTime?Math.max(Number(e.runningTime),0):null,state:e.state,waitingFor:e.waitingFor,locks:null,progress:null})))},getAuthTypes(){const e=[{title:"Host and port",name:"hostPort"},{title:"Socket",name:"socket"}];return b.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 f.debug(this.getLogDbInfo(e),`DBGM-00142 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))})));C.initialize=e=>{b=e.authProxy},e.exports=C},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'},883: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),O=n(264),C=n(447),S=n(823),T=n(883);e.exports={columns:t,tableModifications:s,tableList:r,viewModifications:i,primaryKeys:m,fk_keyColumnUsage:T,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,listDatabases:O,listVariables:C,listProcesses:S}},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'},264:e=>{e.exports='\nSELECT \n "datname" AS "name",\n pg_database_size("datname") AS "sizeOnDisk",\n 0 AS "tableCount",\n 0 AS "viewCount", \n 0 AS "matviewCount"\nFROM "pg_database" \nWHERE "datistemplate" = false\nORDER BY pg_database_size("datname") DESC\n'},823:e=>{e.exports='\nSELECT \n "pid" AS "processId",\n "application_name" AS "client",\n "client_addr" AS "connectionId",\n "state" AS "state",\n "query" AS "operation",\n EXTRACT(EPOCH FROM (NOW() - "state_change")) AS "runningTime",\n "wait_event" IS NOT NULL AS "waitingFor"\nFROM "pg_stat_activity" \nWHERE "state" IS NOT NULL\nORDER BY "pid"\n'},447:e=>{e.exports='\nSELECT "name" AS "variable", "setting" AS "value" \nFROM "pg_settings" \nORDER BY "name"\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},{type:"text",label:"Custom arguments",name:"customArgs"}]: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}"'`);if(o.customArgs?.trim()){const e=o.customArgs.split(/\s+/).filter((e=>""!=e.trim()));c.push(...e)}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,supportsServerSummary:!0,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,supportsServerSummary:!0,engine:"cockroach@dbgate-plugin-postgres",title:"CockroachDB",defaultPort:26257,dialect:{...o,materializedViews:!0,dropColumnDependencies:["primaryKey","dependencies"],dropPrimaryKey:!1},__analyserInternals:{}},p={...m,supportsServerSummary:!0,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/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dbgate-plugin-postgres",
|
|
3
3
|
"main": "dist/backend.js",
|
|
4
|
-
"version": "6.6.
|
|
4
|
+
"version": "6.6.10",
|
|
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.7",
|
|
41
|
-
"dbgate-tools": "^6.6.
|
|
41
|
+
"dbgate-tools": "^6.6.10",
|
|
42
42
|
"lodash": "^4.17.21",
|
|
43
43
|
"pg": "^8.11.5"
|
|
44
44
|
}
|