Skip to content

Commit 7ef8de4

Browse files
committed
Delegate getType methods to TypeRegistry
1 parent 6059a07 commit 7ef8de4

File tree

9 files changed

+102
-22
lines changed

9 files changed

+102
-22
lines changed

presto-main/src/main/java/io/prestosql/metadata/Metadata.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -404,15 +404,9 @@ public interface Metadata
404404

405405
Type getType(TypeSignature signature);
406406

407-
default Type fromSqlType(String sqlType)
408-
{
409-
return getType(TypeSignature.parseTypeSignature(sqlType)); // TODO: use SQL parser
410-
}
407+
Type fromSqlType(String sqlType);
411408

412-
default Type getType(TypeId id)
413-
{
414-
return getType(TypeSignature.parseTypeSignature(id.getId()));
415-
}
409+
Type getType(TypeId id);
416410

417411
default Type getParameterizedType(String baseTypeName, List<TypeSignatureParameter> typeParameters)
418412
{

presto-main/src/main/java/io/prestosql/metadata/MetadataManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
import io.prestosql.spi.statistics.TableStatisticsMetadata;
8484
import io.prestosql.spi.type.ParametricType;
8585
import io.prestosql.spi.type.Type;
86+
import io.prestosql.spi.type.TypeId;
8687
import io.prestosql.spi.type.TypeNotFoundException;
8788
import io.prestosql.spi.type.TypeSignature;
8889
import io.prestosql.sql.analyzer.FeaturesConfig;
@@ -1211,6 +1212,18 @@ public Type getType(TypeSignature signature)
12111212
return typeRegistry.getType(new InternalTypeManager(this), signature);
12121213
}
12131214

1215+
@Override
1216+
public Type fromSqlType(String sqlType)
1217+
{
1218+
return typeRegistry.fromSqlType(new InternalTypeManager(this), sqlType);
1219+
}
1220+
1221+
@Override
1222+
public Type getType(TypeId id)
1223+
{
1224+
return typeRegistry.getType(new InternalTypeManager(this), id);
1225+
}
1226+
12141227
@Override
12151228
public Collection<Type> getTypes()
12161229
{

presto-main/src/main/java/io/prestosql/metadata/TypeRegistry.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.util.concurrent.UncheckedExecutionException;
2020
import io.prestosql.spi.type.ParametricType;
2121
import io.prestosql.spi.type.Type;
22+
import io.prestosql.spi.type.TypeId;
2223
import io.prestosql.spi.type.TypeManager;
2324
import io.prestosql.spi.type.TypeNotFoundException;
2425
import io.prestosql.spi.type.TypeParameter;
@@ -58,6 +59,7 @@
5859
import static io.prestosql.spi.type.TimestampType.TIMESTAMP;
5960
import static io.prestosql.spi.type.TimestampWithTimeZoneType.TIMESTAMP_WITH_TIME_ZONE;
6061
import static io.prestosql.spi.type.TinyintType.TINYINT;
62+
import static io.prestosql.spi.type.TypeSignature.parseTypeSignature;
6163
import static io.prestosql.spi.type.VarbinaryType.VARBINARY;
6264
import static io.prestosql.type.ArrayParametricType.ARRAY;
6365
import static io.prestosql.type.CodePointsType.CODE_POINTS;
@@ -155,6 +157,17 @@ public Type getType(TypeManager typeManager, TypeSignature signature)
155157
return type;
156158
}
157159

160+
public Type getType(TypeManager typeManager, TypeId id)
161+
{
162+
// TODO: ID should be encoded in a more canonical form than SQL
163+
return fromSqlType(typeManager, id.getId());
164+
}
165+
166+
public Type fromSqlType(TypeManager typeManager, String sqlType)
167+
{
168+
return getType(typeManager, parseTypeSignature(sqlType)); // TODO: use SQL parser
169+
}
170+
158171
private Type instantiateParametricType(TypeManager typeManager, TypeSignature signature)
159172
{
160173
List<TypeParameter> parameters = new ArrayList<>();

presto-main/src/main/java/io/prestosql/type/InternalTypeManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.prestosql.spi.function.OperatorType;
2020
import io.prestosql.spi.type.ParametricType;
2121
import io.prestosql.spi.type.Type;
22+
import io.prestosql.spi.type.TypeId;
2223
import io.prestosql.spi.type.TypeManager;
2324
import io.prestosql.spi.type.TypeSignature;
2425
import io.prestosql.spi.type.TypeSignatureParameter;
@@ -51,6 +52,18 @@ public Type getType(TypeSignature signature)
5152
return metadata.getType(signature);
5253
}
5354

55+
@Override
56+
public Type fromSqlType(String type)
57+
{
58+
return metadata.fromSqlType(type);
59+
}
60+
61+
@Override
62+
public Type getType(TypeId id)
63+
{
64+
return metadata.getType(id);
65+
}
66+
5467
@Override
5568
public Type getParameterizedType(String baseTypeName, List<TypeSignatureParameter> typeParameters)
5669
{

presto-main/src/test/java/io/prestosql/execution/TestCreateTableTask.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.prestosql.metadata.Catalog;
2222
import io.prestosql.metadata.CatalogManager;
2323
import io.prestosql.metadata.ColumnPropertyManager;
24+
import io.prestosql.metadata.MetadataManager;
2425
import io.prestosql.metadata.QualifiedObjectName;
2526
import io.prestosql.metadata.TableHandle;
2627
import io.prestosql.metadata.TablePropertyManager;
@@ -31,6 +32,7 @@
3132
import io.prestosql.spi.connector.ConnectorCapabilities;
3233
import io.prestosql.spi.connector.ConnectorTableMetadata;
3334
import io.prestosql.spi.type.Type;
35+
import io.prestosql.spi.type.TypeId;
3436
import io.prestosql.spi.type.TypeSignature;
3537
import io.prestosql.sql.tree.ColumnDefinition;
3638
import io.prestosql.sql.tree.CreateTable;
@@ -44,7 +46,6 @@
4446
import java.util.Optional;
4547
import java.util.Set;
4648
import java.util.concurrent.CopyOnWriteArrayList;
47-
import java.util.function.Function;
4849

4950
import static com.google.common.collect.Sets.immutableEnumSet;
5051
import static io.airlift.concurrent.MoreFutures.getFutureValue;
@@ -183,7 +184,7 @@ public void testCreateWithUnsupportedConnectorThrowsWhenNotNull()
183184
private static class MockMetadata
184185
extends AbstractMockMetadata
185186
{
186-
private final Function<TypeSignature, Type> typeLookup;
187+
private final MetadataManager metadata;
187188
private final TablePropertyManager tablePropertyManager;
188189
private final ColumnPropertyManager columnPropertyManager;
189190
private final CatalogName catalogHandle;
@@ -200,7 +201,7 @@ public MockMetadata(
200201
this.columnPropertyManager = requireNonNull(columnPropertyManager, "columnPropertyManager is null");
201202
this.catalogHandle = requireNonNull(catalogHandle, "catalogHandle is null");
202203
this.connectorCapabilities = requireNonNull(immutableEnumSet(connectorCapabilities), "connectorCapabilities is null");
203-
this.typeLookup = createTestMetadataManager()::getType;
204+
this.metadata = createTestMetadataManager();
204205
}
205206

206207
@Override
@@ -227,7 +228,19 @@ public ColumnPropertyManager getColumnPropertyManager()
227228
@Override
228229
public Type getType(TypeSignature signature)
229230
{
230-
return typeLookup.apply(signature);
231+
return metadata.getType(signature);
232+
}
233+
234+
@Override
235+
public Type getType(TypeId id)
236+
{
237+
return metadata.getType(id);
238+
}
239+
240+
@Override
241+
public Type fromSqlType(String sqlType)
242+
{
243+
return metadata.fromSqlType(sqlType);
231244
}
232245

233246
@Override

presto-main/src/test/java/io/prestosql/metadata/AbstractMockMetadata.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import io.prestosql.spi.statistics.TableStatisticsMetadata;
5252
import io.prestosql.spi.type.ParametricType;
5353
import io.prestosql.spi.type.Type;
54+
import io.prestosql.spi.type.TypeId;
5455
import io.prestosql.spi.type.TypeSignature;
5556
import io.prestosql.sql.analyzer.TypeSignatureProvider;
5657
import io.prestosql.sql.planner.PartitioningHandle;
@@ -503,6 +504,18 @@ public Type getType(TypeSignature signature)
503504
throw new UnsupportedOperationException();
504505
}
505506

507+
@Override
508+
public Type fromSqlType(String sqlType)
509+
{
510+
throw new UnsupportedOperationException();
511+
}
512+
513+
@Override
514+
public Type getType(TypeId id)
515+
{
516+
throw new UnsupportedOperationException();
517+
}
518+
506519
@Override
507520
public void verifyComparableOrderableContract()
508521
{

presto-main/src/test/java/io/prestosql/sql/planner/TestEffectivePredicateExtractor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import io.prestosql.spi.predicate.Domain;
3939
import io.prestosql.spi.predicate.TupleDomain;
4040
import io.prestosql.spi.type.Type;
41+
import io.prestosql.spi.type.TypeId;
4142
import io.prestosql.spi.type.TypeSignature;
4243
import io.prestosql.sql.analyzer.TypeSignatureProvider;
4344
import io.prestosql.sql.parser.SqlParser;
@@ -139,6 +140,17 @@ public Type getType(TypeSignature signature)
139140
return delegate.getType(signature);
140141
}
141142

143+
public Type fromSqlType(String sqlType)
144+
{
145+
return delegate.fromSqlType(sqlType);
146+
}
147+
148+
@Override
149+
public Type getType(TypeId id)
150+
{
151+
return delegate.getType(id);
152+
}
153+
142154
@Override
143155
public ResolvedFunction resolveFunction(QualifiedName name, List<TypeSignatureProvider> parameterTypes)
144156
{

presto-spi/src/main/java/io/prestosql/spi/type/TypeManager.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import java.util.List;
2121
import java.util.Optional;
2222

23-
import static io.prestosql.spi.type.TypeSignature.parseTypeSignature;
24-
2523
public interface TypeManager
2624
{
2725
/**
@@ -34,18 +32,12 @@ public interface TypeManager
3432
/**
3533
* Gets a type given it's SQL representation
3634
*/
37-
default Type fromSqlType(String type)
38-
{
39-
return getType(parseTypeSignature(type)); // TODO: use SQL parser
40-
}
35+
Type fromSqlType(String type);
4136

4237
/**
4338
* Gets the type with the give (opaque) id
4439
*/
45-
default Type getType(TypeId id)
46-
{
47-
return getType(parseTypeSignature(id.getId()));
48-
}
40+
Type getType(TypeId id);
4941

5042
/**
5143
* Gets the type with the specified base type and the given parameters.

presto-spi/src/test/java/io/prestosql/spi/type/TestingTypeManager.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,23 @@ public Type getType(TypeSignature signature)
4545
throw new TypeNotFoundException(signature);
4646
}
4747

48+
@Override
49+
public Type fromSqlType(String type)
50+
{
51+
throw new UnsupportedOperationException();
52+
}
53+
54+
@Override
55+
public Type getType(TypeId id)
56+
{
57+
for (Type type : getTypes()) {
58+
if (type.getTypeId().equals(id)) {
59+
return type;
60+
}
61+
}
62+
throw new IllegalArgumentException("Type not found: " + id);
63+
}
64+
4865
@Override
4966
public Type getParameterizedType(String baseTypeName, List<TypeSignatureParameter> typeParameters)
5067
{

0 commit comments

Comments
 (0)