提交 2b1dba59 编写于 作者: S Serge Rider

#13694 Redshift procedures read fix (correct oid + structure assistant)

上级 8f4b7c3f
......@@ -130,7 +130,7 @@ public class GreenplumSchema extends PostgreSchema {
@Nullable PostgreProcedure object,
@Nullable String objectName) throws SQLException {
JDBCPreparedStatement dbStat = session.prepareStatement(
"SELECT p.oid,p.*," +
"SELECT p.oid as poid,p.*," +
(session.getDataSource().isServerVersionAtLeast(8, 4) ? "pg_catalog.pg_get_expr(p.proargdefaults, 0)" : "NULL") + " as arg_defaults,d.description\n" +
"FROM pg_catalog.pg_proc p\n" +
"LEFT OUTER JOIN pg_catalog.pg_description d ON d.objoid=p.oid\n" +
......
......@@ -131,7 +131,7 @@ public class PostgreProcedure extends AbstractProcedure<PostgreDataSource, Postg
}
private void loadInfo(DBRProgressMonitor monitor, ResultSet dbResult) {
this.oid = JDBCUtils.safeGetLong(dbResult, "oid");
this.oid = JDBCUtils.safeGetLong(dbResult, "poid");
setName(JDBCUtils.safeGetString(dbResult, "proname"));
this.ownerId = JDBCUtils.safeGetLong(dbResult, "proowner");
this.languageId = JDBCUtils.safeGetLong(dbResult, "prolang");
......
......@@ -1079,7 +1079,7 @@ public class PostgreSchema implements
PostgreServerExtension serverType = owner.getDataSource().getServerType();
String oidColumn = serverType.getProceduresOidColumn(); // Hack for Redshift SP support
JDBCPreparedStatement dbStat = session.prepareStatement(
"SELECT p." + oidColumn + ",p.*," +
"SELECT p." + oidColumn + " as poid,p.*," +
(session.getDataSource().isServerVersionAtLeast(8, 4) ? "pg_catalog.pg_get_expr(p.proargdefaults, 0)" : "NULL") + " as arg_defaults,d.description\n" +
"FROM pg_catalog." + serverType.getProceduresSystemTable() + " p\n" +
"LEFT OUTER JOIN pg_catalog.pg_description d ON d.objoid=p." + oidColumn + "\n" +
......
......@@ -31,7 +31,10 @@ import org.jkiss.dbeaver.model.impl.struct.AbstractObjectReference;
import org.jkiss.dbeaver.model.impl.struct.RelationalObjectType;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.sql.SQLUtils;
import org.jkiss.dbeaver.model.struct.*;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.model.struct.DBSObjectFilter;
import org.jkiss.dbeaver.model.struct.DBSObjectReference;
import org.jkiss.dbeaver.model.struct.DBSObjectType;
import org.jkiss.utils.CommonUtils;
import java.sql.SQLException;
......@@ -210,15 +213,16 @@ public class PostgreStructureAssistant extends JDBCStructureAssistant<PostgreExe
@NotNull Collection<? super DBSObjectReference> objects) throws SQLException, DBException {
DBRProgressMonitor monitor = session.getProgressMonitor();
PostgreServerExtension serverType = database.getDataSource().getServerType();
QueryParams queryParams = new QueryParams(
"pp.oid, pp.*",
"pg_catalog.pg_proc pp",
"pp." + serverType.getProceduresOidColumn() + " as poid, pp.*",
"pg_catalog." + serverType.getProceduresSystemTable() + " pp",
"pp.proname",
schemas,
"pp.pronamespace",
"pp.proname"
);
queryParams.setWhereClause("pp.proname NOT LIKE '\\_%'");
//queryParams.setWhereClause("pp.proname NOT LIKE '\\_%'");
queryParams.setCaseSensitive(params.isCaseSensitive());
if (params.isSearchInComments()) {
queryParams.setDescriptionClause("obj_description(pp.oid, 'pg_proc')");
......@@ -236,7 +240,7 @@ public class PostgreStructureAssistant extends JDBCStructureAssistant<PostgreExe
while (!monitor.isCanceled() && dbResult.next()) {
final long schemaId = JDBCUtils.safeGetLong(dbResult, "pronamespace");
final String procName = JDBCUtils.safeGetString(dbResult, "proname");
final long procId = JDBCUtils.safeGetLong(dbResult, "oid");
final long procId = JDBCUtils.safeGetLong(dbResult, "poid");
final PostgreSchema procSchema = database.getSchema(session.getProgressMonitor(), schemaId);
if (procSchema == null) {
log.debug("Procedure's schema '" + schemaId + "' not found");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册