Search in sources :

Example 1 with JetSqlRow

use of com.hazelcast.sql.impl.row.JetSqlRow in project hazelcast by hazelcast.

the class PlanExecutor method execute.

SqlResult execute(ShowStatementPlan plan) {
    Stream<String> rows;
    switch(plan.getShowTarget()) {
        case MAPPINGS:
            rows = catalog.getMappingNames().stream();
            break;
        case VIEWS:
            rows = catalog.getViewNames().stream();
            break;
        case JOBS:
            assert plan.getShowTarget() == ShowStatementTarget.JOBS;
            NodeEngine nodeEngine = getNodeEngine(hazelcastInstance);
            JetServiceBackend jetServiceBackend = nodeEngine.getService(JetServiceBackend.SERVICE_NAME);
            rows = jetServiceBackend.getJobRepository().getJobRecords().stream().map(record -> record.getConfig().getName()).filter(Objects::nonNull);
            break;
        default:
            throw new AssertionError("Unsupported SHOW statement target.");
    }
    SqlRowMetadata metadata = new SqlRowMetadata(singletonList(new SqlColumnMetadata("name", VARCHAR, false)));
    InternalSerializationService serializationService = Util.getSerializationService(hazelcastInstance);
    return new SqlResultImpl(QueryId.create(hazelcastInstance.getLocalEndpoint().getUuid()), new StaticQueryResultProducerImpl(rows.sorted().map(name -> new JetSqlRow(serializationService, new Object[] { name })).iterator()), metadata, false);
}
Also used : NodeEngine(com.hazelcast.spi.impl.NodeEngine) Util.getNodeEngine(com.hazelcast.jet.impl.util.Util.getNodeEngine) UpdateSqlResultImpl(com.hazelcast.sql.impl.UpdateSqlResultImpl) Arrays(java.util.Arrays) DropViewPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.DropViewPlan) SelectPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.SelectPlan) TimeoutException(java.util.concurrent.TimeoutException) Extractors(com.hazelcast.query.impl.getters.Extractors) SQL_ARGUMENTS_KEY_NAME(com.hazelcast.sql.impl.expression.ExpressionEvalContext.SQL_ARGUMENTS_KEY_NAME) CreateIndexPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.CreateIndexPlan) SqlRowMetadata(com.hazelcast.sql.SqlRowMetadata) QueryParameterMetadata(com.hazelcast.sql.impl.QueryParameterMetadata) Collections.singletonList(java.util.Collections.singletonList) MapProxyImpl(com.hazelcast.map.impl.proxy.MapProxyImpl) ParameterConverter(com.hazelcast.sql.impl.ParameterConverter) SqlNode(org.apache.calcite.sql.SqlNode) Map(java.util.Map) VARCHAR(com.hazelcast.sql.SqlColumnType.VARCHAR) CreateJobPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.CreateJobPlan) CreateMappingPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.CreateMappingPlan) DropMappingPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.DropMappingPlan) CancellationException(java.util.concurrent.CancellationException) JobConfig(com.hazelcast.jet.config.JobConfig) AlterJobPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.AlterJobPlan) QueryResultRegistry(com.hazelcast.sql.impl.state.QueryResultRegistry) IMapUpdatePlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.IMapUpdatePlan) IndexConfig(com.hazelcast.config.IndexConfig) IMapSelectPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.IMapSelectPlan) Objects(java.util.Objects) Util(com.hazelcast.jet.impl.util.Util) List(java.util.List) ExpressionEvalContext(com.hazelcast.sql.impl.expression.ExpressionEvalContext) Stream(java.util.stream.Stream) JobStateSnapshot(com.hazelcast.jet.JobStateSnapshot) EmptyRow(com.hazelcast.sql.impl.row.EmptyRow) DropJobPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.DropJobPlan) DmlPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.DmlPlan) RelDataTypeField(org.apache.calcite.rel.type.RelDataTypeField) UNIQUE_KEY_TRANSFORMATION(com.hazelcast.jet.sql.impl.parse.SqlCreateIndex.UNIQUE_KEY_TRANSFORMATION) SqlResult(com.hazelcast.sql.SqlResult) Entry(java.util.Map.Entry) SqlErrorCode(com.hazelcast.sql.impl.SqlErrorCode) UniqueKeyTransformation(com.hazelcast.config.BitmapIndexOptions.UniqueKeyTransformation) QueryDataType(com.hazelcast.sql.impl.type.QueryDataType) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) SqlColumnMetadata(com.hazelcast.sql.SqlColumnMetadata) IMapSinkPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.IMapSinkPlan) EntryRemovingProcessor(com.hazelcast.map.impl.EntryRemovingProcessor) ArrayList(java.util.ArrayList) JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) IndexType(com.hazelcast.config.IndexType) InternalSerializationService(com.hazelcast.internal.serialization.InternalSerializationService) IMapInsertPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.IMapInsertPlan) View(com.hazelcast.sql.impl.schema.view.View) IMapDeletePlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.IMapDeletePlan) KEY_SQL_QUERY_TEXT(com.hazelcast.jet.config.JobConfigArguments.KEY_SQL_QUERY_TEXT) Job(com.hazelcast.jet.Job) QueryException(com.hazelcast.sql.impl.QueryException) HazelcastInstance(com.hazelcast.core.HazelcastInstance) NodeEngine(com.hazelcast.spi.impl.NodeEngine) MapContainer(com.hazelcast.map.impl.MapContainer) CreateViewPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.CreateViewPlan) DropSnapshotPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.DropSnapshotPlan) TableResolverImpl(com.hazelcast.jet.sql.impl.schema.TableResolverImpl) MapService(com.hazelcast.map.impl.MapService) QueryId(com.hazelcast.sql.impl.QueryId) RelNode(org.apache.calcite.rel.RelNode) BitmapIndexOptions(com.hazelcast.config.BitmapIndexOptions) ShowStatementTarget(com.hazelcast.jet.sql.impl.parse.SqlShowStatement.ShowStatementTarget) MapServiceContext(com.hazelcast.map.impl.MapServiceContext) HazelcastTypeUtils.toHazelcastType(com.hazelcast.jet.sql.impl.validate.types.HazelcastTypeUtils.toHazelcastType) CreateSnapshotPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.CreateSnapshotPlan) ExecutionException(java.util.concurrent.ExecutionException) TimeUnit(java.util.concurrent.TimeUnit) ShowStatementPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.ShowStatementPlan) UNIQUE_KEY(com.hazelcast.jet.sql.impl.parse.SqlCreateIndex.UNIQUE_KEY) ExplainStatementPlan(com.hazelcast.jet.sql.impl.SqlPlanImpl.ExplainStatementPlan) Util.getNodeEngine(com.hazelcast.jet.impl.util.Util.getNodeEngine) KEY_SQL_UNBOUNDED(com.hazelcast.jet.config.JobConfigArguments.KEY_SQL_UNBOUNDED) AbstractJetInstance(com.hazelcast.jet.impl.AbstractJetInstance) JetServiceBackend(com.hazelcast.jet.impl.JetServiceBackend) IMap(com.hazelcast.map.IMap) SqlRowMetadata(com.hazelcast.sql.SqlRowMetadata) InternalSerializationService(com.hazelcast.internal.serialization.InternalSerializationService) JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) UpdateSqlResultImpl(com.hazelcast.sql.impl.UpdateSqlResultImpl) SqlColumnMetadata(com.hazelcast.sql.SqlColumnMetadata) JetServiceBackend(com.hazelcast.jet.impl.JetServiceBackend)

Example 2 with JetSqlRow

use of com.hazelcast.sql.impl.row.JetSqlRow in project hazelcast by hazelcast.

the class ExpressionUtil method join.

/**
 * Concatenates {@code leftRow} and {@code rightRow} into one, evaluates
 * the {@code predicate} on it, and if the predicate passed, returns the
 * joined row; returns {@code null} if the predicate didn't pass.
 */
@Nullable
public static JetSqlRow join(@Nonnull JetSqlRow leftRow, @Nonnull JetSqlRow rightRow, @Nonnull Expression<Boolean> predicate, @Nonnull ExpressionEvalContext context) {
    Object[] joined = Arrays.copyOf(leftRow.getValues(), leftRow.getFieldCount() + rightRow.getFieldCount());
    System.arraycopy(rightRow.getValues(), 0, joined, leftRow.getFieldCount(), rightRow.getFieldCount());
    JetSqlRow result = new JetSqlRow(context.getSerializationService(), joined);
    Row row = result.getRow();
    return Boolean.TRUE.equals(evaluate(predicate, row, context)) ? result : null;
}
Also used : JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) Row(com.hazelcast.sql.impl.row.Row) Nullable(javax.annotation.Nullable)

Example 3 with JetSqlRow

use of com.hazelcast.sql.impl.row.JetSqlRow in project hazelcast by hazelcast.

the class ExpressionUtil method evaluate.

/**
 * Evaluate projection&predicate for a single row. Returns {@code null} if
 * the row is rejected by the predicate.
 */
@Nullable
public static JetSqlRow evaluate(@Nullable Expression<Boolean> predicate, @Nullable List<Expression<?>> projection, @Nonnull JetSqlRow values, @Nonnull ExpressionEvalContext context) {
    Row row = values.getRow();
    if (predicate != null && !Boolean.TRUE.equals(evaluate(predicate, row, context))) {
        return null;
    }
    if (projection == null) {
        return values;
    }
    Object[] result = new Object[projection.size()];
    for (int i = 0; i < projection.size(); i++) {
        result[i] = evaluate(projection.get(i), row, context);
    }
    return new JetSqlRow(context.getSerializationService(), result);
}
Also used : JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) Row(com.hazelcast.sql.impl.row.Row) JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) Nullable(javax.annotation.Nullable)

Example 4 with JetSqlRow

use of com.hazelcast.sql.impl.row.JetSqlRow in project hazelcast by hazelcast.

the class JoinByEquiJoinProcessorSupplier method join.

private static List<JetSqlRow> join(JetSqlRow left, Set<Entry<Object, Object>> entries, KvRowProjector rightRowProjector, Expression<Boolean> condition, ExpressionEvalContext evalContext) {
    List<JetSqlRow> rows = new ArrayList<>();
    for (Entry<Object, Object> entry : entries) {
        JetSqlRow right = rightRowProjector.project(entry.getKey(), entry.getValue());
        if (right == null) {
            continue;
        }
        JetSqlRow joined = ExpressionUtil.join(left, right, condition, evalContext);
        if (joined != null) {
            rows.add(joined);
        }
    }
    return rows;
}
Also used : ArrayList(java.util.ArrayList) JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow)

Example 5 with JetSqlRow

use of com.hazelcast.sql.impl.row.JetSqlRow in project hazelcast by hazelcast.

the class MapIndexScanP method runSortedIndex.

private boolean runSortedIndex() {
    for (; ; ) {
        if (pendingItem != null && !tryEmit(pendingItem)) {
            return false;
        } else {
            pendingItem = null;
        }
        JetSqlRow extreme = null;
        int extremeIndex = -1;
        for (int i = 0; i < splits.size(); ++i) {
            Split split = splits.get(i);
            try {
                split.peek();
            } catch (MissingPartitionException e) {
                splits.addAll(splitOnMigration(split));
                splits.remove(i--);
                continue;
            }
            if (split.currentRow == null) {
                if (split.done()) {
                    // No more items to read, remove finished split.
                    splits.remove(i--);
                    continue;
                }
                // waiting for more rows from this split
                return false;
            }
            if (extremeIndex < 0 || metadata.getComparator().compare(split.currentRow, splits.get(extremeIndex).currentRow) < 0) {
                extremeIndex = i;
                extreme = split.currentRow;
            }
        }
        if (extremeIndex < 0) {
            assert splits.isEmpty();
            return true;
        }
        pendingItem = extreme;
        splits.get(extremeIndex).remove();
    }
}
Also used : MissingPartitionException(com.hazelcast.map.impl.operation.MapFetchIndexOperation.MissingPartitionException) JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow)

Aggregations

JetSqlRow (com.hazelcast.sql.impl.row.JetSqlRow)50 ParallelJVMTest (com.hazelcast.test.annotation.ParallelJVMTest)16 QuickTest (com.hazelcast.test.annotation.QuickTest)16 Test (org.junit.Test)16 ExpressionEvalContext (com.hazelcast.sql.impl.expression.ExpressionEvalContext)15 ArrayList (java.util.ArrayList)14 Vertex (com.hazelcast.jet.core.Vertex)13 List (java.util.List)9 IndexConfig (com.hazelcast.config.IndexConfig)8 JobConfig (com.hazelcast.jet.config.JobConfig)8 ProcessorMetaSupplier (com.hazelcast.jet.core.ProcessorMetaSupplier)8 NodeEngine (com.hazelcast.spi.impl.NodeEngine)8 Expression (com.hazelcast.sql.impl.expression.Expression)8 QueryDataType (com.hazelcast.sql.impl.type.QueryDataType)8 FunctionEx (com.hazelcast.function.FunctionEx)7 QueryParameterMetadata (com.hazelcast.sql.impl.QueryParameterMetadata)7 DAG (com.hazelcast.jet.core.DAG)6 ObjectArrayKey (com.hazelcast.jet.sql.impl.ObjectArrayKey)6 DefaultSerializationServiceBuilder (com.hazelcast.internal.serialization.impl.DefaultSerializationServiceBuilder)5 Traverser (com.hazelcast.jet.Traverser)5