Skip to content

Commit 80a7835

Browse files
committed
[Address Comment] Move TestProcedureRegistry out of the presto-spi module
1 parent e00da3a commit 80a7835

File tree

7 files changed

+104
-6
lines changed

7 files changed

+104
-6
lines changed

presto-analyzer/src/test/java/com/facebook/presto/sql/analyzer/TestBuiltInQueryPreparer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.facebook.presto.spi.procedure.Procedure;
2222
import com.facebook.presto.spi.procedure.ProcedureRegistry;
2323
import com.facebook.presto.spi.procedure.TableDataRewriteDistributedProcedure;
24-
import com.facebook.presto.spi.procedure.TestProcedureRegistry;
2524
import com.facebook.presto.sql.analyzer.BuiltInQueryPreparer.BuiltInPreparedQuery;
2625
import com.facebook.presto.sql.parser.SqlParser;
2726
import com.facebook.presto.sql.tree.AllColumns;
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
/*
2+
* Licensed under the Apache License, Version 2.0 (the "License");
3+
* you may not use this file except in compliance with the License.
4+
* You may obtain a copy of the License at
5+
*
6+
* http://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* Unless required by applicable law or agreed to in writing, software
9+
* distributed under the License is distributed on an "AS IS" BASIS,
10+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
* See the License for the specific language governing permissions and
12+
* limitations under the License.
13+
*/
14+
package com.facebook.presto.sql.analyzer;
15+
16+
import com.facebook.presto.spi.ConnectorId;
17+
import com.facebook.presto.spi.PrestoException;
18+
import com.facebook.presto.spi.SchemaTableName;
19+
import com.facebook.presto.spi.connector.ConnectorProcedureContext;
20+
import com.facebook.presto.spi.procedure.DistributedProcedure;
21+
import com.facebook.presto.spi.procedure.Procedure;
22+
import com.facebook.presto.spi.procedure.ProcedureRegistry;
23+
24+
import java.util.Collection;
25+
import java.util.Map;
26+
import java.util.concurrent.ConcurrentHashMap;
27+
import java.util.function.Function;
28+
import java.util.stream.Collectors;
29+
30+
import static com.facebook.presto.spi.StandardErrorCode.PROCEDURE_NOT_FOUND;
31+
import static java.util.Objects.requireNonNull;
32+
33+
public class TestProcedureRegistry
34+
implements ProcedureRegistry
35+
{
36+
private final Map<ConnectorId, Map<SchemaTableName, Procedure>> connectorProcedures = new ConcurrentHashMap<>();
37+
38+
@Override
39+
public void addProcedures(ConnectorId connectorId, Collection<Procedure> procedures)
40+
{
41+
requireNonNull(connectorId, "connectorId is null");
42+
requireNonNull(procedures, "procedures is null");
43+
44+
Map<SchemaTableName, Procedure> proceduresByName = procedures.stream().collect(Collectors.toMap(
45+
procedure -> new SchemaTableName(procedure.getSchema(), procedure.getName()),
46+
Function.identity()));
47+
if (connectorProcedures.putIfAbsent(connectorId, proceduresByName) != null) {
48+
throw new IllegalStateException("Procedures already registered for connector: " + connectorId);
49+
}
50+
}
51+
52+
@Override
53+
public void removeProcedures(ConnectorId connectorId)
54+
{
55+
connectorProcedures.remove(connectorId);
56+
}
57+
58+
@Override
59+
public Procedure resolve(ConnectorId connectorId, SchemaTableName name)
60+
{
61+
Map<SchemaTableName, Procedure> procedures = connectorProcedures.get(connectorId);
62+
if (procedures != null) {
63+
Procedure procedure = procedures.get(name);
64+
if (procedure != null) {
65+
return procedure;
66+
}
67+
}
68+
throw new PrestoException(PROCEDURE_NOT_FOUND, "Procedure not registered: " + name);
69+
}
70+
71+
@Override
72+
public DistributedProcedure resolveDistributed(ConnectorId connectorId, SchemaTableName name)
73+
{
74+
Map<SchemaTableName, Procedure> procedures = connectorProcedures.get(connectorId);
75+
if (procedures != null) {
76+
Procedure procedure = procedures.get(name);
77+
if (procedure != null && procedure instanceof DistributedProcedure) {
78+
return (DistributedProcedure) procedure;
79+
}
80+
}
81+
throw new PrestoException(PROCEDURE_NOT_FOUND, "Distributed procedure not registered: " + name);
82+
}
83+
84+
@Override
85+
public boolean isDistributedProcedure(ConnectorId connectorId, SchemaTableName name)
86+
{
87+
Map<SchemaTableName, Procedure> procedures = connectorProcedures.get(connectorId);
88+
return procedures != null &&
89+
procedures.containsKey(name) &&
90+
procedures.get(name) instanceof DistributedProcedure;
91+
}
92+
93+
public static class TestProcedureContext
94+
implements ConnectorProcedureContext
95+
{}
96+
}

presto-spi/src/main/java/com/facebook/presto/spi/procedure/TestProcedureRegistry.java renamed to presto-main-base/src/main/java/com/facebook/presto/testing/TestProcedureRegistry.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@
1111
* See the License for the specific language governing permissions and
1212
* limitations under the License.
1313
*/
14-
package com.facebook.presto.spi.procedure;
14+
package com.facebook.presto.testing;
1515

1616
import com.facebook.presto.spi.ConnectorId;
1717
import com.facebook.presto.spi.PrestoException;
1818
import com.facebook.presto.spi.SchemaTableName;
1919
import com.facebook.presto.spi.connector.ConnectorProcedureContext;
20+
import com.facebook.presto.spi.procedure.DistributedProcedure;
21+
import com.facebook.presto.spi.procedure.Procedure;
22+
import com.facebook.presto.spi.procedure.ProcedureRegistry;
2023

2124
import java.util.Collection;
2225
import java.util.Map;

presto-main-base/src/test/java/com/facebook/presto/execution/TestCreateMaterializedViewTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@
4141
import com.facebook.presto.spi.analyzer.ViewDefinition;
4242
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
4343
import com.facebook.presto.spi.procedure.ProcedureRegistry;
44-
import com.facebook.presto.spi.procedure.TestProcedureRegistry;
4544
import com.facebook.presto.spi.resourceGroups.ResourceGroupId;
4645
import com.facebook.presto.spi.security.AccessControl;
4746
import com.facebook.presto.spi.security.AllowAllAccessControl;
4847
import com.facebook.presto.sql.parser.ParsingOptions;
4948
import com.facebook.presto.sql.parser.SqlParser;
5049
import com.facebook.presto.sql.tree.CreateMaterializedView;
50+
import com.facebook.presto.testing.TestProcedureRegistry;
5151
import com.facebook.presto.transaction.TransactionManager;
5252
import com.google.common.collect.ImmutableList;
5353
import org.testng.annotations.BeforeMethod;

presto-main-base/src/test/java/com/facebook/presto/sql/analyzer/AbstractAnalyzerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@
5959
import com.facebook.presto.spi.function.SqlInvokedFunction;
6060
import com.facebook.presto.spi.procedure.Procedure;
6161
import com.facebook.presto.spi.procedure.TableDataRewriteDistributedProcedure;
62-
import com.facebook.presto.spi.procedure.TestProcedureRegistry;
6362
import com.facebook.presto.spi.security.AccessControl;
6463
import com.facebook.presto.spi.security.AllowAllAccessControl;
6564
import com.facebook.presto.spi.session.PropertyMetadata;
6665
import com.facebook.presto.spi.transaction.IsolationLevel;
6766
import com.facebook.presto.sql.parser.SqlParser;
6867
import com.facebook.presto.sql.tree.NodeLocation;
6968
import com.facebook.presto.sql.tree.Statement;
69+
import com.facebook.presto.testing.TestProcedureRegistry;
7070
import com.facebook.presto.testing.TestingAccessControlManager;
7171
import com.facebook.presto.testing.TestingMetadata;
7272
import com.facebook.presto.testing.TestingWarningCollector;

presto-main-base/src/test/java/com/facebook/presto/sql/planner/TestLogicalPlanner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import com.facebook.presto.spi.plan.ValuesNode;
4444
import com.facebook.presto.spi.procedure.Procedure;
4545
import com.facebook.presto.spi.procedure.TableDataRewriteDistributedProcedure;
46-
import com.facebook.presto.spi.procedure.TestProcedureRegistry;
4746
import com.facebook.presto.spi.relation.VariableReferenceExpression;
4847
import com.facebook.presto.spi.transaction.IsolationLevel;
4948
import com.facebook.presto.sql.analyzer.FeaturesConfig.JoinDistributionType;
@@ -61,6 +60,7 @@
6160
import com.facebook.presto.sql.planner.plan.StatisticsWriterNode;
6261
import com.facebook.presto.sql.tree.LongLiteral;
6362
import com.facebook.presto.testing.QueryRunner;
63+
import com.facebook.presto.testing.TestProcedureRegistry;
6464
import com.facebook.presto.testing.TestingHandleResolver;
6565
import com.facebook.presto.testing.TestingMetadata;
6666
import com.facebook.presto.testing.TestingSplitManager;

presto-tests/src/test/java/com/facebook/presto/tests/TestProcedureCreation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import com.facebook.presto.spi.ConnectorSession;
1818
import com.facebook.presto.spi.procedure.Procedure;
1919
import com.facebook.presto.spi.procedure.TableDataRewriteDistributedProcedure;
20-
import com.facebook.presto.spi.procedure.TestProcedureRegistry;
20+
import com.facebook.presto.testing.TestProcedureRegistry;
2121
import com.google.common.collect.ImmutableList;
2222
import org.testng.annotations.Test;
2323

0 commit comments

Comments
 (0)