Skip to content

Commit

Permalink
Update BlackHole connector to transactional API
Browse files Browse the repository at this point in the history
  • Loading branch information
electrum committed Jan 20, 2016
1 parent 5f5f226 commit c832ee8
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 23 deletions.
Expand Up @@ -14,12 +14,14 @@


package com.facebook.presto.plugin.blackhole; package com.facebook.presto.plugin.blackhole;


import com.facebook.presto.spi.Connector; import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.ConnectorMetadata; import com.facebook.presto.spi.connector.ConnectorMetadata;
import com.facebook.presto.spi.ConnectorPageSinkProvider; import com.facebook.presto.spi.connector.ConnectorPageSinkProvider;
import com.facebook.presto.spi.ConnectorPageSourceProvider; import com.facebook.presto.spi.connector.ConnectorPageSourceProvider;
import com.facebook.presto.spi.ConnectorSplitManager; import com.facebook.presto.spi.connector.ConnectorSplitManager;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.facebook.presto.spi.session.PropertyMetadata; import com.facebook.presto.spi.session.PropertyMetadata;
import com.facebook.presto.spi.transaction.IsolationLevel;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;


import java.util.List; import java.util.List;
Expand Down Expand Up @@ -51,7 +53,20 @@ public BlackHoleConnector(BlackHoleMetadata metadata,
} }


@Override @Override
public ConnectorMetadata getMetadata() public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly)
{
return BlackHoleTransactionHandle.INSTANCE;
}

@Override
public boolean isSingleStatementWritesOnly()
{
// TODO: support transactional metadata
return true;
}

@Override
public ConnectorMetadata getMetadata(ConnectorTransactionHandle transactionHandle)
{ {
return metadata; return metadata;
} }
Expand Down
Expand Up @@ -14,9 +14,9 @@


package com.facebook.presto.plugin.blackhole; package com.facebook.presto.plugin.blackhole;


import com.facebook.presto.spi.Connector;
import com.facebook.presto.spi.ConnectorFactory;
import com.facebook.presto.spi.ConnectorHandleResolver; import com.facebook.presto.spi.ConnectorHandleResolver;
import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorFactory;


import java.util.Map; import java.util.Map;


Expand Down
Expand Up @@ -21,6 +21,7 @@
import com.facebook.presto.spi.ConnectorSplit; import com.facebook.presto.spi.ConnectorSplit;
import com.facebook.presto.spi.ConnectorTableHandle; import com.facebook.presto.spi.ConnectorTableHandle;
import com.facebook.presto.spi.ConnectorTableLayoutHandle; import com.facebook.presto.spi.ConnectorTableLayoutHandle;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;


public final class BlackHoleHandleResolver public final class BlackHoleHandleResolver
implements ConnectorHandleResolver implements ConnectorHandleResolver
Expand Down Expand Up @@ -60,4 +61,10 @@ public Class<? extends ConnectorTableLayoutHandle> getTableLayoutHandleClass()
{ {
return BlackHoleTableLayoutHandle.class; return BlackHoleTableLayoutHandle.class;
} }

@Override
public Class<? extends ConnectorTransactionHandle> getTransactionHandleClass()
{
return BlackHoleTransactionHandle.class;
}
} }
Expand Up @@ -17,7 +17,6 @@
import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnHandle;
import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ColumnMetadata;
import com.facebook.presto.spi.ConnectorInsertTableHandle; import com.facebook.presto.spi.ConnectorInsertTableHandle;
import com.facebook.presto.spi.ConnectorMetadata;
import com.facebook.presto.spi.ConnectorOutputTableHandle; import com.facebook.presto.spi.ConnectorOutputTableHandle;
import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.ConnectorSession;
import com.facebook.presto.spi.ConnectorTableHandle; import com.facebook.presto.spi.ConnectorTableHandle;
Expand All @@ -29,6 +28,7 @@
import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.SchemaTableName;
import com.facebook.presto.spi.SchemaTablePrefix; import com.facebook.presto.spi.SchemaTablePrefix;
import com.facebook.presto.spi.connector.ConnectorMetadata;
import com.facebook.presto.spi.predicate.TupleDomain; import com.facebook.presto.spi.predicate.TupleDomain;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import io.airlift.slice.Slice; import io.airlift.slice.Slice;
Expand Down Expand Up @@ -141,7 +141,7 @@ public void renameTable(ConnectorSession session, ConnectorTableHandle tableHand
public void createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata) public void createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata)
{ {
ConnectorOutputTableHandle outputTableHandle = beginCreateTable(session, tableMetadata); ConnectorOutputTableHandle outputTableHandle = beginCreateTable(session, tableMetadata);
commitCreateTable(session, outputTableHandle, ImmutableList.of()); finishCreateTable(session, outputTableHandle, ImmutableList.of());
} }


@Override @Override
Expand Down Expand Up @@ -177,7 +177,7 @@ public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, Con
} }


@Override @Override
public void commitCreateTable(ConnectorSession session, ConnectorOutputTableHandle tableHandle, Collection<Slice> fragments) public void finishCreateTable(ConnectorSession session, ConnectorOutputTableHandle tableHandle, Collection<Slice> fragments)
{ {
BlackHoleOutputTableHandle blackHoleOutputTableHandle = checkType(tableHandle, BlackHoleOutputTableHandle.class, "tableHandle"); BlackHoleOutputTableHandle blackHoleOutputTableHandle = checkType(tableHandle, BlackHoleOutputTableHandle.class, "tableHandle");
BlackHoleTableHandle table = blackHoleOutputTableHandle.getTable(); BlackHoleTableHandle table = blackHoleOutputTableHandle.getTable();
Expand All @@ -191,9 +191,7 @@ public ConnectorInsertTableHandle beginInsert(ConnectorSession session, Connecto
} }


@Override @Override
public void commitInsert(ConnectorSession session, ConnectorInsertTableHandle insertHandle, Collection<Slice> fragments) public void finishInsert(ConnectorSession session, ConnectorInsertTableHandle insertHandle, Collection<Slice> fragments) {}
{
}


@Override @Override
public List<ConnectorTableLayoutResult> getTableLayouts( public List<ConnectorTableLayoutResult> getTableLayouts(
Expand Down
Expand Up @@ -17,10 +17,11 @@
import com.facebook.presto.spi.ConnectorInsertTableHandle; import com.facebook.presto.spi.ConnectorInsertTableHandle;
import com.facebook.presto.spi.ConnectorOutputTableHandle; import com.facebook.presto.spi.ConnectorOutputTableHandle;
import com.facebook.presto.spi.ConnectorPageSink; import com.facebook.presto.spi.ConnectorPageSink;
import com.facebook.presto.spi.ConnectorPageSinkProvider;
import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.ConnectorSession;
import com.facebook.presto.spi.Page; import com.facebook.presto.spi.Page;
import com.facebook.presto.spi.block.Block; import com.facebook.presto.spi.block.Block;
import com.facebook.presto.spi.connector.ConnectorPageSinkProvider;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import io.airlift.slice.Slice; import io.airlift.slice.Slice;


Expand All @@ -30,13 +31,13 @@ public class BlackHolePageSinkProvider
implements ConnectorPageSinkProvider implements ConnectorPageSinkProvider
{ {
@Override @Override
public ConnectorPageSink createPageSink(ConnectorSession session, ConnectorOutputTableHandle outputTableHandle) public ConnectorPageSink createPageSink(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorOutputTableHandle outputTableHandle)
{ {
return new NoOpConnectorPageSink(); return new NoOpConnectorPageSink();
} }


@Override @Override
public ConnectorPageSink createPageSink(ConnectorSession session, ConnectorInsertTableHandle insertTableHandle) public ConnectorPageSink createPageSink(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorInsertTableHandle insertTableHandle)
{ {
return new NoOpConnectorPageSink(); return new NoOpConnectorPageSink();
} }
Expand Down
Expand Up @@ -16,14 +16,15 @@


import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnHandle;
import com.facebook.presto.spi.ConnectorPageSource; import com.facebook.presto.spi.ConnectorPageSource;
import com.facebook.presto.spi.ConnectorPageSourceProvider;
import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.ConnectorSession;
import com.facebook.presto.spi.ConnectorSplit; import com.facebook.presto.spi.ConnectorSplit;
import com.facebook.presto.spi.FixedPageSource; import com.facebook.presto.spi.FixedPageSource;
import com.facebook.presto.spi.Page; import com.facebook.presto.spi.Page;
import com.facebook.presto.spi.block.Block; import com.facebook.presto.spi.block.Block;
import com.facebook.presto.spi.block.BlockBuilder; import com.facebook.presto.spi.block.BlockBuilder;
import com.facebook.presto.spi.block.BlockBuilderStatus; import com.facebook.presto.spi.block.BlockBuilderStatus;
import com.facebook.presto.spi.connector.ConnectorPageSourceProvider;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.facebook.presto.spi.type.FixedWidthType; import com.facebook.presto.spi.type.FixedWidthType;
import com.facebook.presto.spi.type.Type; import com.facebook.presto.spi.type.Type;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
Expand Down Expand Up @@ -52,7 +53,11 @@ public final class BlackHolePageSourceProvider
private static final Set<Type> SUPPORTED_TYPES = ImmutableSet.of(BIGINT, DOUBLE, BOOLEAN, DATE, TIMESTAMP, VARCHAR, VARBINARY); private static final Set<Type> SUPPORTED_TYPES = ImmutableSet.of(BIGINT, DOUBLE, BOOLEAN, DATE, TIMESTAMP, VARCHAR, VARBINARY);


@Override @Override
public ConnectorPageSource createPageSource(ConnectorSession session, ConnectorSplit split, List<ColumnHandle> columns) public ConnectorPageSource createPageSource(
ConnectorTransactionHandle transactionHandle,
ConnectorSession session,
ConnectorSplit split,
List<ColumnHandle> columns)
{ {
BlackHoleSplit blackHoleSplit = checkType(split, BlackHoleSplit.class, "BlackHoleSplit"); BlackHoleSplit blackHoleSplit = checkType(split, BlackHoleSplit.class, "BlackHoleSplit");


Expand Down
Expand Up @@ -14,8 +14,8 @@


package com.facebook.presto.plugin.blackhole; package com.facebook.presto.plugin.blackhole;


import com.facebook.presto.spi.ConnectorFactory;
import com.facebook.presto.spi.Plugin; import com.facebook.presto.spi.Plugin;
import com.facebook.presto.spi.connector.ConnectorFactory;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;


import java.util.List; import java.util.List;
Expand Down
Expand Up @@ -15,10 +15,11 @@
package com.facebook.presto.plugin.blackhole; package com.facebook.presto.plugin.blackhole;


import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.ConnectorSession;
import com.facebook.presto.spi.ConnectorSplitManager;
import com.facebook.presto.spi.ConnectorSplitSource; import com.facebook.presto.spi.ConnectorSplitSource;
import com.facebook.presto.spi.ConnectorTableLayoutHandle; import com.facebook.presto.spi.ConnectorTableLayoutHandle;
import com.facebook.presto.spi.FixedSplitSource; import com.facebook.presto.spi.FixedSplitSource;
import com.facebook.presto.spi.connector.ConnectorSplitManager;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;


import static com.facebook.presto.plugin.blackhole.Types.checkType; import static com.facebook.presto.plugin.blackhole.Types.checkType;
Expand All @@ -27,7 +28,7 @@ public final class BlackHoleSplitManager
implements ConnectorSplitManager implements ConnectorSplitManager
{ {
@Override @Override
public ConnectorSplitSource getSplits(ConnectorSession session, ConnectorTableLayoutHandle layoutHandle) public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorTableLayoutHandle layoutHandle)
{ {
BlackHoleTableLayoutHandle layout = checkType( BlackHoleTableLayoutHandle layout = checkType(
layoutHandle, layoutHandle,
Expand Down
@@ -0,0 +1,22 @@
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.facebook.presto.plugin.blackhole;

import com.facebook.presto.spi.connector.ConnectorTransactionHandle;

public enum BlackHoleTransactionHandle
implements ConnectorTransactionHandle
{
INSTANCE
}
Expand Up @@ -54,7 +54,7 @@ public void tableIsCreatedAfterCommits()


assertThatNoTableIsCreated(); assertThatNoTableIsCreated();


metadata.commitCreateTable(SESSION, table, ImmutableList.of()); metadata.finishCreateTable(SESSION, table, ImmutableList.of());


List<SchemaTableName> tables = metadata.listTables(SESSION, null); List<SchemaTableName> tables = metadata.listTables(SESSION, null);
assertTrue(tables.size() == 1, "Expected only one table."); assertTrue(tables.size() == 1, "Expected only one table.");
Expand Down

0 comments on commit c832ee8

Please sign in to comment.