public ProcedureParameter getReturnParameter() { for (ProcedureParameter param : this.metadataObject.getParameters()) { if (param.getType() == Type.ReturnValue) { return param; } } return null; }
@Override protected Collection<? extends BaseColumn> getChildren(final Procedure parent, CommandContext cc) { Collection<ProcedureParameter> params = parent.getParameters(); if (parent.getResultSet() == null) { return params; } //TODO: don't incur the gc cost of the temp list Collection<Column> rsColumns = parent.getResultSet().getColumns(); ArrayList<BaseColumn> result = new ArrayList<BaseColumn>(params.size() + rsColumns.size()); result.addAll(params); result.addAll(rsColumns); return result; }
@Override protected Collection<? extends BaseColumn> getChildren(final Procedure parent, CommandContext cc) { Collection<ProcedureParameter> params = parent.getParameters(); if (parent.getResultSet() == null) { return params; } //TODO: don't incur the gc cost of the temp list Collection<Column> rsColumns = parent.getResultSet().getColumns(); ArrayList<BaseColumn> result = new ArrayList<BaseColumn>(params.size() + rsColumns.size()); result.addAll(params); result.addAll(rsColumns); return result; }
@Override protected Collection<? extends BaseColumn> getChildren(final Procedure parent, CommandContext cc) { Collection<ProcedureParameter> params = parent.getParameters(); if (parent.getResultSet() == null) { return params; } //TODO: don't incur the gc cost of the temp list Collection<Column> rsColumns = parent.getResultSet().getColumns(); ArrayList<BaseColumn> result = new ArrayList<BaseColumn>(params.size() + rsColumns.size()); result.addAll(params); result.addAll(rsColumns); return result; }
private ProcedureParameter getReturnParameter() { for (ProcedureParameter parameter: this.procedure.getParameters()) { if (parameter.getType().equals(ProcedureParameter.Type.ReturnValue)) { return parameter; } } return null; }
private ProcedureParameter getReturnParameter() { for (ProcedureParameter pp : this.command.getMetadataObject().getParameters()) { if (pp.getType() == ProcedureParameter.Type.ReturnValue) { return pp; } } return null; }
private ProcedureParameter getReturnParameter() { for (ProcedureParameter pp : this.command.getMetadataObject().getParameters()) { if (pp.getType() == ProcedureParameter.Type.ReturnValue) { return pp; } } return null; }
private Class<?> resolveParameterType(String procedureName, String parameterName) { for (ProcedureParameter pp : this.procedure.getParameters()) { if (pp.getName().equalsIgnoreCase(parameterName)) { return DataTypeManager.getDataTypeClass(pp.getRuntimeType()); } } return null; }
private static boolean doesProcedureReturn(Procedure proc) { for (ProcedureParameter pp : proc.getParameters()) { if (pp.getType().equals(ProcedureParameter.Type.ReturnValue)) { return true; } } return (proc.getResultSet() != null); }
private static boolean isInputParameterLob(Procedure proc) { for (ProcedureParameter pp : proc.getParameters()) { if (!pp.getType().equals(ProcedureParameter.Type.ReturnValue) && DataTypeManager.isLOB(pp.getRuntimeType())) { return true; } } return false; }
AbstractMetadataRecord getColumn(String paramName, Procedure proc, boolean parameter) throws MetadataException { if (proc.getResultSet() != null) { Column result = proc.getResultSet().getColumnByName(paramName); if (result != null) { return result; } } if (parameter) { List<ProcedureParameter> params = proc.getParameters(); for (ProcedureParameter param:params) { if (param.getName().equalsIgnoreCase(paramName)) { return param; } } } throw new MetadataException(QueryPlugin.Util.getString("SQLParser.alter_procedure_param_doesnot_exist", paramName, proc.getName())); //$NON-NLS-1$ }
AbstractMetadataRecord getColumn(String paramName, Procedure proc, boolean parameter) throws MetadataException { if (proc.getResultSet() != null) { Column result = proc.getResultSet().getColumnByName(paramName); if (result != null) { return result; } } if (parameter) { List<ProcedureParameter> params = proc.getParameters(); for (ProcedureParameter param:params) { if (param.getName().equalsIgnoreCase(paramName)) { return param; } } } throw new MetadataException(QueryPlugin.Util.getString("SQLParser.alter_procedure_param_doesnot_exist", paramName, proc.getName())); //$NON-NLS-1$ }
@Test public void testAlterProcedureColumnType() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE myProc(OUT p1 boolean, p2 varchar, INOUT p3 decimal) " + "RETURNS (r1 varchar, r2 decimal)" + "OPTIONS(RANDOM 'any', UUID 'uuid', NAMEINSOURCE 'nis', ANNOTATION 'desc', UPDATECOUNT '2');" + "ALTER FOREIGN PROCEDURE myProc ALTER PARAMETER p2 TYPE integer;"; Schema s = helpParse(ddl, "model").getSchema(); Procedure proc = s.getProcedure("myProc"); assertNotNull(proc); assertEquals("p2", proc.getParameters().get(1).getName()); assertEquals("integer", proc.getParameters().get(1).getRuntimeType()); }
private void assignOids(Schema schema, TreeMap<String, RecordHolder> map) { addOid(schema, map); for (Table table : schema.getTables().values()) { addOid(table, map); addOids(table.getColumns(), map); addOids(table.getAllKeys(), map); } for (Procedure proc : schema.getProcedures().values()) { addOid(proc, map); addOids(proc.getParameters(), map); if (proc.getResultSet() != null) { addOids(proc.getResultSet().getColumns(), map); } } for (FunctionMethod func : schema.getFunctions().values()) { addOid(func, map); addOids(func.getInputParameters(), map); addOid(func.getOutputParameter(), map); } }
@Test public void testAlterProcedureColumnRename() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE myProc(OUT p1 boolean, p2 varchar, INOUT p3 decimal) " + "RETURNS (r1 varchar, r2 decimal)" + "OPTIONS(RANDOM 'any', UUID 'uuid', NAMEINSOURCE 'nis', ANNOTATION 'desc', UPDATECOUNT '2');" + "ALTER FOREIGN PROCEDURE myProc RENAME PARAMETER p2 TO p2renamed;"; Schema s = helpParse(ddl, "model").getSchema(); Procedure proc = s.getProcedure("myProc"); assertNotNull(proc); assertEquals("p2renamed", proc.getParameters().get(1).getName()); }
@Test public void testAlterProcedureOptions() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE myProc(OUT p1 boolean, p2 varchar, INOUT p3 decimal) " + "RETURNS (r1 varchar, r2 decimal)" + "OPTIONS(RANDOM 'any', UUID 'uuid', NAMEINSOURCE 'nis', ANNOTATION 'desc', UPDATECOUNT '2');" + "ALTER FOREIGN PROCEDURE myProc OPTIONS(SET NAMEINSOURCE 'x');" + "ALTER FOREIGN PROCEDURE myProc ALTER PARAMETER p2 OPTIONS (ADD x 'y');" + "ALTER FOREIGN PROCEDURE myProc OPTIONS(DROP UPDATECOUNT);"; Schema s = helpParse(ddl, "model").getSchema(); Procedure proc = s.getProcedure("myProc"); assertNotNull(proc); assertEquals("x", proc.getNameInSource()); assertEquals("p2", proc.getParameters().get(1).getName()); assertEquals("y", proc.getParameters().get(1).getProperty("x", false)); assertEquals(1, proc.getUpdateCount()); }
public void procedureCreated(Procedure procedure) { if (!assertInEditMode(Mode.SCHEMA)) { return; } assertGrant(Grant.Permission.Privilege.CREATE, Database.ResourceType.PROCEDURE, procedure); Schema s = getCurrentSchema(); setUUID(s.getUUID(), procedure); for (ProcedureParameter param : procedure.getParameters()) { setUUID(s.getUUID(), param); } if (procedure.getResultSet() != null) { setUUID(s.getUUID(), procedure.getResultSet()); } s.addProcedure(procedure); }
public void procedureCreated(Procedure procedure) { if (!assertInEditMode(Mode.SCHEMA)) { return; } assertGrant(Grant.Permission.Privilege.CREATE, Database.ResourceType.PROCEDURE, procedure); Schema s = getCurrentSchema(); setUUID(s.getUUID(), procedure); for (ProcedureParameter param : procedure.getParameters()) { setUUID(s.getUUID(), param); } if (procedure.getResultSet() != null) { setUUID(s.getUUID(), procedure.getResultSet()); } s.addProcedure(procedure); }
public void procedureCreated(Procedure procedure) { if (!assertInEditMode(Mode.SCHEMA)) { return; } assertGrant(Grant.Permission.Privilege.CREATE, Database.ResourceType.PROCEDURE, procedure); Schema s = getCurrentSchema(); setUUID(s.getUUID(), procedure); for (ProcedureParameter param : procedure.getParameters()) { setUUID(s.getUUID(), param); } if (procedure.getResultSet() != null) { setUUID(s.getUUID(), procedure.getResultSet()); } s.addProcedure(procedure); }
@Test public void testCreateProcedure() throws Exception { String ddl = "CREATE DATABASE FOO;" + "USE DATABASE FOO;" + "CREATE FOREIGN DATA WRAPPER postgresql;" + "CREATE SERVER pgsql TYPE 'custom' FOREIGN DATA WRAPPER postgresql OPTIONS (\"jndi-name\" 'jndiname');" + "CREATE SCHEMA test SERVER pgsql;" + "SET SCHEMA test;" + "CREATE FOREIGN PROCEDURE procG1(P1 integer) RETURNS (e1 integer, e2 varchar)"; Database db = helpParse(ddl); Schema s = db.getSchema("test"); Procedure p = s.getProcedure("procG1"); assertNotNull(p); assertEquals(1, p.getParameters().size()); assertNotNull(p.getParameterByName("P1")); assertEquals(2, p.getResultSet().getColumns().size()); assertEquals("e1", p.getResultSet().getColumns().get(0).getName()); }