Author: shawkins
Date: 2012-02-02 11:22:09 -0500 (Thu, 02 Feb 2012)
New Revision: 3842
Added:
branches/7.7.x/metadata/src/test/resources/TEIIDDES992_VDB.vdb
Modified:
branches/7.7.x/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java
branches/7.7.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SQLConversionVisitor.java
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java
branches/7.7.x/connectors/translator-ldap/src/main/java/org/teiid/translator/ldap/LDAPSyncQueryExecution.java
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/SelectVisitor.java
branches/7.7.x/documentation/reference/src/main/docbook/en-US/content/translators.xml
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java
branches/7.7.x/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
branches/7.7.x/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java
branches/7.7.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java
Log:
TEIID-1902 updating extension property keys and adding back source function support
Modified: branches/7.7.x/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java
===================================================================
---
branches/7.7.x/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -59,6 +59,8 @@
private LinkedHashMap<String, String> properties;
private String annotation;
+
+ public static final String RELATIONAL_URI =
"{http://www.teiid.org/ext/relational/2012}"; //$NON-NLS-1$
public String getUUID() {
if (uuid == null) {
@@ -134,6 +136,18 @@
return properties;
}
+ public String getProperty(String key, boolean checkUnqualified) {
+ String value = getProperties().get(key);
+ if (value != null || !checkUnqualified) {
+ return value;
+ }
+ int index = key.indexOf('}');
+ if (index > 0 && index < key.length() && key.charAt(0) ==
'{') {
+ key = key.substring(index + 1, key.length());
+ }
+ return getProperties().get(key);
+ }
+
/**
* The preferred setter for extension properties.
* @param key
Modified: branches/7.7.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java
===================================================================
--- branches/7.7.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java 2012-02-01
22:01:48 UTC (rev 3841)
+++ branches/7.7.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -108,7 +108,7 @@
private Determinism determinism = Determinism.DETERMINISTIC;
@XmlElement(name="inputParameters")
- protected List<FunctionParameter> inParameters = new
ArrayList<FunctionParameter>();
+ protected List<FunctionParameter> inParameters = new
ArrayList<FunctionParameter>(2);
private FunctionParameter outputParameter;
private Schema parent;
Modified:
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SQLConversionVisitor.java
===================================================================
---
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SQLConversionVisitor.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/SQLConversionVisitor.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -39,25 +39,13 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.teiid.language.Argument;
-import org.teiid.language.Call;
-import org.teiid.language.Command;
-import org.teiid.language.Comparison;
-import org.teiid.language.DerivedColumn;
-import org.teiid.language.ExpressionValueSource;
-import org.teiid.language.Function;
-import org.teiid.language.In;
-import org.teiid.language.LanguageObject;
-import org.teiid.language.Like;
-import org.teiid.language.Literal;
-import org.teiid.language.NamedTable;
-import org.teiid.language.SearchedCase;
-import org.teiid.language.SetClause;
+import org.teiid.language.*;
import org.teiid.language.Argument.Direction;
import org.teiid.language.SQLConstants.Reserved;
import org.teiid.language.SQLConstants.Tokens;
import org.teiid.language.SetQuery.Operation;
import org.teiid.language.visitor.SQLStringVisitor;
+import org.teiid.metadata.AbstractMetadataRecord;
import org.teiid.metadata.Procedure;
import org.teiid.translator.ExecutionContext;
import org.teiid.translator.TypeFacility;
@@ -68,9 +56,8 @@
* to produce a SQL String. This class is expected to be subclassed.
*/
public class SQLConversionVisitor extends SQLStringVisitor{
-
- public static final String TEIID_NATIVE_QUERY = "teiid:native-query";
//$NON-NLS-1$
- public static final String TEIID_NON_PREPARED = "teiid:non-prepared";
//$NON-NLS-1$
+ public static final String TEIID_NATIVE_QUERY = AbstractMetadataRecord.RELATIONAL_URI +
"native-query"; //$NON-NLS-1$
+ public static final String TEIID_NON_PREPARED = AbstractMetadataRecord.RELATIONAL_URI +
"non-prepared"; //$NON-NLS-1$
private static DecimalFormat DECIMAL_FORMAT =
new
DecimalFormat("#############################0.0#############################");
//$NON-NLS-1$
@@ -193,10 +180,10 @@
public void visit(Call obj) {
Procedure p = obj.getMetadataObject();
if (p != null) {
- String nativeQuery = p.getProperties().get(TEIID_NATIVE_QUERY);
+ String nativeQuery = p.getProperty(TEIID_NATIVE_QUERY, false);
if (nativeQuery != null) {
List<Object> parts = parseNativeQueryParts(nativeQuery);
- this.prepared = !Boolean.valueOf(p.getProperties().get(TEIID_NON_PREPARED));
+ this.prepared = !Boolean.valueOf(p.getProperty(TEIID_NON_PREPARED, false));
if (this.prepared) {
this.preparedValues = new ArrayList<Object>();
}
@@ -425,7 +412,7 @@
@Override
protected void appendBaseName(NamedTable obj) {
if (obj.getMetadataObject() != null) {
- String nativeQuery = obj.getMetadataObject().getProperties().get(TEIID_NATIVE_QUERY);
+ String nativeQuery = obj.getMetadataObject().getProperty(TEIID_NATIVE_QUERY, false);
if (nativeQuery != null) {
buffer.append(Tokens.LPAREN).append(nativeQuery).append(Tokens.RPAREN);
if (obj.getCorrelationName() == null) {
Modified:
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java
===================================================================
---
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -37,20 +37,7 @@
import java.util.Collection;
import java.util.List;
-import org.teiid.language.Call;
-import org.teiid.language.ColumnReference;
-import org.teiid.language.Command;
-import org.teiid.language.DerivedColumn;
-import org.teiid.language.Expression;
-import org.teiid.language.ExpressionValueSource;
-import org.teiid.language.Function;
-import org.teiid.language.Insert;
-import org.teiid.language.LanguageObject;
-import org.teiid.language.Limit;
-import org.teiid.language.Literal;
-import org.teiid.language.NamedTable;
-import org.teiid.language.QueryExpression;
-import org.teiid.language.Select;
+import org.teiid.language.*;
import org.teiid.language.SQLConstants.Tokens;
import org.teiid.language.SetQuery.Operation;
import org.teiid.language.visitor.CollectorVisitor;
@@ -607,7 +594,7 @@
public List<?> translate(LanguageObject obj, ExecutionContext context) {
if (oracleSuppliedDriver && obj instanceof Call) {
Call call = (Call)obj;
- if (call.getReturnType() == null && call.getMetadataObject() != null
&&
call.getMetadataObject().getProperties().get(SQLConversionVisitor.TEIID_NATIVE_QUERY) ==
null) {
+ if (call.getReturnType() == null && call.getMetadataObject() != null
&& call.getMetadataObject().getProperty(SQLConversionVisitor.TEIID_NATIVE_QUERY,
false) == null) {
//oracle returns the resultset as a parameter
call.setReturnType(RefCursorType.class);
}
Modified:
branches/7.7.x/connectors/translator-ldap/src/main/java/org/teiid/translator/ldap/LDAPSyncQueryExecution.java
===================================================================
---
branches/7.7.x/connectors/translator-ldap/src/main/java/org/teiid/translator/ldap/LDAPSyncQueryExecution.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/connectors/translator-ldap/src/main/java/org/teiid/translator/ldap/LDAPSyncQueryExecution.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -80,7 +80,6 @@
import java.util.Date;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
@@ -458,15 +457,11 @@
// MPW: 3-11-07: Added support for java.lang.Integer conversion.
if(TypeFacility.RUNTIME_TYPES.TIMESTAMP.equals(modelAttrClass)) {
- Map<String, String> p = modelElement.getProperties();
-
- String timestampFormat = p.get("Format"); //$NON-NLS-1$
- SimpleDateFormat dateFormat;
+ String timestampFormat = modelElement.getFormat();
if(timestampFormat == null) {
timestampFormat = LDAPConnectorConstants.ldapTimestampFormat;
-
}
- dateFormat = new SimpleDateFormat(timestampFormat);
+ SimpleDateFormat dateFormat = new SimpleDateFormat(timestampFormat);
try {
if(strResult != null) {
Date dateResult = dateFormat.parse(strResult);
Modified:
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java
===================================================================
---
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Constants.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -40,12 +40,14 @@
public static final String EMAIL_TYPE = "email"; //$NON-NLS-1$
+ public static final String EXTENSION_URI =
"{http://www.teiid.org/translator/salesforce/2012}"; //$NON-NLS-1$
+
public static final String RESTRICTED_PICKLIST_TYPE = "restrictedpicklist";
//$NON-NLS-1$
public static final String RESTRICTED_MULTISELECT_PICKLIST_TYPE =
"restrictedmultiselectpicklist"; //$NON-NLS-1$
- public static final String SUPPORTS_QUERY = "Supports Query";//$NON-NLS-1$
+ public static final String SUPPORTS_QUERY = EXTENSION_URI +"Supports
Query";//$NON-NLS-1$
- public static final String SUPPORTS_RETRIEVE = "Supports
Retrieve";//$NON-NLS-1$
+ public static final String SUPPORTS_RETRIEVE = EXTENSION_URI +"Supports
Retrieve";//$NON-NLS-1$
}
Modified:
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
===================================================================
---
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -37,6 +37,7 @@
import org.teiid.metadata.RuntimeMetadata;
import org.teiid.metadata.Table;
import org.teiid.translator.TranslatorException;
+import org.teiid.translator.salesforce.Constants;
import org.teiid.translator.salesforce.SalesForcePlugin;
import org.teiid.translator.salesforce.Util;
@@ -365,7 +366,7 @@
protected void loadColumnMetadata( NamedTable group ) throws TranslatorException {
table = group.getMetadataObject();
- String supportsQuery = table.getProperties().get("Supports Query");
//$NON-NLS-1$
+ String supportsQuery = table.getProperty(Constants.SUPPORTS_QUERY, true);
if (!Boolean.valueOf(supportsQuery)) {
throw new TranslatorException(table.getNameInSource() + " " +
SalesForcePlugin.Util.getString("CriteriaVisitor.query.not.supported"));
//$NON-NLS-1$ //$NON-NLS-2$
}
Modified:
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/SelectVisitor.java
===================================================================
---
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/SelectVisitor.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/SelectVisitor.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -115,8 +115,8 @@
public void visit(NamedTable obj) {
try {
table = obj.getMetadataObject();
- String supportsQuery = table.getProperties().get(Constants.SUPPORTS_QUERY);
- objectSupportsRetrieve =
Boolean.valueOf(table.getProperties().get(Constants.SUPPORTS_RETRIEVE));
+ String supportsQuery = table.getProperty(Constants.SUPPORTS_QUERY, true);
+ objectSupportsRetrieve =
Boolean.valueOf(table.getProperty(Constants.SUPPORTS_RETRIEVE, true));
if (!Boolean.valueOf(supportsQuery)) {
throw new TranslatorException(table.getNameInSource() + " " +
SalesForcePlugin.Util.getString("CriteriaVisitor.query.not.supported"));
//$NON-NLS-1$ //$NON-NLS-2$
}
Modified:
branches/7.7.x/documentation/reference/src/main/docbook/en-US/content/translators.xml
===================================================================
---
branches/7.7.x/documentation/reference/src/main/docbook/en-US/content/translators.xml 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/documentation/reference/src/main/docbook/en-US/content/translators.xml 2012-02-02
16:22:09 UTC (rev 3842)
@@ -547,15 +547,15 @@
<section>
<title>Native Queries</title>
<para>Both physical tables and procedures may optionally have native
queries associated with them. No validation of the native query is performed, it is
simply used in a straight-forward manner to generate the source SQL.
- For a physical table setting the teiid:native-query extension metadata to the
desired query string will have Teiid execute the native query as an inline view in the
source query.
- This feature should only be used against sources that support inline views. For
example on a physical table y with nameInSource=x and teiid:native-query=select c from g,
the Teiid source query
+ For a physical table setting the
{http://www.teiid.org/ext/relational/2012}native-query extension metadata to the desired
query string will have Teiid execute the native query as an inline view in the source
query.
+ This feature should only be used against sources that support inline views. For
example on a physical table y with nameInSource="x" and
{http://www.teiid.org/ext/relational/2012}native-query="select c from g", the
Teiid source query
"SELECT c FROM y" would generate the SQL query "SELECT c FROM
(select c from g) as x". Note that the column names in the native query must match
the nameInSource of the physical table columns for the resulting SQL
to be valid.</para>
- <para>For physical procedures you may also set the teiid:native-query
extension metadata to a desired query string with the added ability to positionally
reference IN parameters. A parameter reference has the form
+ <para>For physical procedures you may also set the
{http://www.teiid.org/ext/relational/2012}native-query extension metadata to a desired
query string with the added ability to positionally reference IN parameters. A parameter
reference has the form
$integer, e.g. $1. Note that 1 based indexing is used and that only IN
parameters may be referenced. Dollar-sign integer is reserved in physical procedure
native queries. To use a $integer directly, it must be escaped with another $, e.g. $$1.
- By default bind values will be used for parameter values. In some situations
you may wish to bind values directly into the resulting SQL. The teiid:non-prepared
extension metadata property may be set to false to turn off
+ By default bind values will be used for parameter values. In some situations
you may wish to bind values directly into the resulting SQL. The
{http://www.teiid.org/ext/relational/2012}non-prepared extension metadata property may be
set to false to turn off
parameter binding. Note this option should be used with caution as inbound may
allow for SQL injection attacks if not properly validated. The native query does not need
to call a stored procedure. Any SQL that returns
- a result set positionally matching the result set expected by the physical
stored procedure metadata will work. For example on a stored procedure x with
teiid:native-query=select c from g where c1 = $1 and c2 = '$$1', the Teiid source
query
+ a result set positionally matching the result set expected by the physical
stored procedure metadata will work. For example on a stored procedure x with
{http://www.teiid.org/ext/relational/2012}native-query="select c from g where c1 = $1
and c2 = '$$1'", the Teiid source query
"CALL x(?)" would generate the SQL query "select c from g where
c1 = ? and c2 = '$1'". Note that ? in this example will be replaced with the
actual value bound to parameter 1.
</para>
</section>
Modified:
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java
===================================================================
---
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -236,7 +236,7 @@
if (!caps.supportsFunction(function.getFunctionDescriptor().getName())) {
return false;
}
- } else if (!schema.getFullName().equalsIgnoreCase(metadata.getFullName(modelID)))
{
+ } else if (!isSameConnector(modelID, schema, metadata, capFinder)) {
return false; //not the right schema
}
Modified:
branches/7.7.x/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
===================================================================
---
branches/7.7.x/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -47,18 +47,9 @@
import org.teiid.core.index.IEntryResult;
import org.teiid.core.util.StringUtil;
import org.teiid.internal.core.index.Index;
-import org.teiid.metadata.AbstractMetadataRecord;
-import org.teiid.metadata.Column;
-import org.teiid.metadata.ColumnSet;
-import org.teiid.metadata.Datatype;
-import org.teiid.metadata.ForeignKey;
-import org.teiid.metadata.KeyRecord;
-import org.teiid.metadata.MetadataStore;
-import org.teiid.metadata.Procedure;
-import org.teiid.metadata.ProcedureParameter;
-import org.teiid.metadata.Schema;
-import org.teiid.metadata.Table;
-import org.teiid.metadata.VdbConstants;
+import org.teiid.metadata.*;
+import org.teiid.metadata.FunctionMethod.Determinism;
+import org.teiid.metadata.FunctionMethod.PushDown;
import org.teiid.query.metadata.TransformationMetadata;
import org.teiid.query.metadata.TransformationMetadata.Resource;
@@ -500,6 +491,35 @@
if(transformRecord != null) {
procedureRecord.setQueryPlan(transformRecord.getTransformation());
}
+ } else if (procedureRecord.isFunction()) {
+ boolean deterministic =
Boolean.valueOf(procedureRecord.getProperty(AbstractMetadataRecord.RELATIONAL_URI +
"deterministic", true)); //$NON-NLS-1$
+ FunctionParameter outputParam = null;
+ List<FunctionParameter> args = new
ArrayList<FunctionParameter>(procedureRecord.getParameters().size() - 1);
+ boolean valid = true;
+ for (ProcedureParameter param : procedureRecord.getParameters()) {
+ FunctionParameter fp = new FunctionParameter();
+ fp.setName(param.getName());
+ fp.setDescription(param.getAnnotation());
+ fp.setType(param.getRuntimeType());
+ switch (param.getType()) {
+ case ReturnValue:
+ if (outputParam != null) {
+ valid = false;
+ }
+ outputParam = fp;
+ break;
+ case In:
+ args.add(fp);
+ break;
+ default:
+ valid = false;
+ }
+ }
+ if (valid && outputParam != null) {
+ model.addFunction(new FunctionMethod(procedureRecord.getName(),
procedureRecord.getAnnotation(), model.getName(), PushDown.MUST_PUSHDOWN,
+ null, null, args.toArray(new FunctionParameter[args.size()]), outputParam,
false, deterministic?Determinism.DETERMINISTIC:Determinism.NONDETERMINISTIC));
+ continue;
+ }
}
model.addProcedure(procedureRecord);
}
Modified:
branches/7.7.x/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java
===================================================================
---
branches/7.7.x/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java 2012-02-01
22:01:48 UTC (rev 3841)
+++
branches/7.7.x/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -27,9 +27,11 @@
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.Collection;
+import java.util.Map;
import org.junit.Test;
import org.teiid.core.util.UnitTestUtil;
+import org.teiid.metadata.FunctionMethod;
import org.teiid.metadata.Schema;
import org.teiid.metadata.Table;
import org.teiid.query.metadata.TransformationMetadata;
@@ -63,4 +65,13 @@
assertNotNull(schema.getFunctions());
}
+ @Test public void testFunctionMetadata() throws Exception {
+ TransformationMetadata tm =
VDBMetadataFactory.getVDBMetadata(UnitTestUtil.getTestDataPath() +
"/TEIIDDES992_VDB.vdb");
+ Map<String, FunctionMethod> functions =
tm.getMetadataStore().getSchema("TEIIDDES992").getFunctions();
+ assertEquals(1, functions.size());
+ FunctionMethod fm = functions.values().iterator().next();
+ assertEquals("sampleFunction", fm.getName());
+ assertEquals(1, fm.getInputParameters().size());
+ }
+
}
Copied: branches/7.7.x/metadata/src/test/resources/TEIIDDES992_VDB.vdb (from rev 3381,
branches/7.4.x/metadata/src/test/resources/TEIIDDES992_VDB.vdb)
===================================================================
(Binary files differ)
Modified: branches/7.7.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java
===================================================================
--- branches/7.7.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java 2012-02-01
22:01:48 UTC (rev 3841)
+++ branches/7.7.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java 2012-02-02
16:22:09 UTC (rev 3842)
@@ -174,7 +174,6 @@
mergedUDF.addFunctions(this.udf);
}
if (this.stores != null) {
- //schema scoped source functions - this is only a dynamic vdb concept
for(MetadataStore store:this.stores.getStores()) {
for (Schema schema:store.getSchemas().values()) {
Collection<FunctionMethod> funcs = schema.getFunctions().values();