/* * 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.raptor.metadata; import com.facebook.presto.raptor.util.UuidUtil.UuidArgumentFactory; import com.facebook.presto.raptor.util.UuidUtil.UuidMapperFactory; import org.skife.jdbi.v2.sqlobject.Bind; import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys; import org.skife.jdbi.v2.sqlobject.SqlQuery; import org.skife.jdbi.v2.sqlobject.SqlUpdate; import org.skife.jdbi.v2.sqlobject.customizers.Mapper; import org.skife.jdbi.v2.sqlobject.customizers.RegisterArgumentFactory; import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapperFactory; import java.util.List; import java.util.Set; import java.util.UUID; @RegisterArgumentFactory(UuidArgumentFactory.class) @RegisterMapperFactory(UuidMapperFactory.class) interface TestingShardDao extends H2ShardDao { @SqlQuery("SELECT shard_uuid FROM shards WHERE table_id = :tableId") List<UUID> getShards(@Bind("tableId") long tableId); @SqlQuery("SELECT s.shard_uuid, n.node_identifier\n" + "FROM shards s\n" + "JOIN shard_nodes sn ON (s.shard_id = sn.shard_id)\n" + "JOIN nodes n ON (sn.node_id = n.node_id)\n" + "WHERE s.table_id = :tableId") @Mapper(ShardNode.Mapper.class) List<ShardNode> getShardNodes(@Bind("tableId") long tableId); @SqlQuery("SELECT node_identifier FROM nodes") Set<String> getAllNodesInUse(); @SqlUpdate("INSERT INTO shards (shard_uuid, table_id, bucket_number, create_time, row_count, compressed_size, uncompressed_size)\n" + "VALUES (:shardUuid, :tableId, :bucketNumber, CURRENT_TIMESTAMP, :rowCount, :compressedSize, :uncompressedSize)") @GetGeneratedKeys long insertShard( @Bind("shardUuid") UUID shardUuid, @Bind("tableId") long tableId, @Bind("bucketNumber") Integer bucketNumber, @Bind("rowCount") long rowCount, @Bind("compressedSize") long compressedSize, @Bind("uncompressedSize") long uncompressedSize); @SqlUpdate("INSERT INTO shard_nodes (shard_id, node_id)\n" + "VALUES (:shardId, :nodeId)\n") void insertShardNode(@Bind("shardId") long shardId, @Bind("nodeId") int nodeId); }