Search in sources :

Example 1 with SqlColumnMetadata

use of com.hazelcast.sql.SqlColumnMetadata 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 SqlColumnMetadata

use of com.hazelcast.sql.SqlColumnMetadata in project hazelcast by hazelcast.

the class CalciteSqlOptimizer method createRowMetadata.

private SqlRowMetadata createRowMetadata(List<String> columnNames, List<QueryDataType> columnTypes, List<RelDataTypeField> fields) {
    assert columnNames.size() == columnTypes.size();
    assert columnTypes.size() == fields.size();
    List<SqlColumnMetadata> columns = new ArrayList<>(columnNames.size());
    for (int i = 0; i < columnNames.size(); i++) {
        SqlColumnMetadata column = QueryUtils.getColumnMetadata(columnNames.get(i), columnTypes.get(i), fields.get(i).getType().isNullable());
        columns.add(column);
    }
    return new SqlRowMetadata(columns);
}
Also used : ArrayList(java.util.ArrayList) SqlRowMetadata(com.hazelcast.sql.SqlRowMetadata) SqlColumnMetadata(com.hazelcast.sql.SqlColumnMetadata)

Example 3 with SqlColumnMetadata

use of com.hazelcast.sql.SqlColumnMetadata in project hazelcast by hazelcast.

the class SqlBasicTest method checkRowMetadata.

private void checkRowMetadata(SqlRowMetadata rowMetadata) {
    List<String> fields = fields();
    List<SqlColumnType> fieldTypes = fieldTypes();
    assertEquals(fields.size(), rowMetadata.getColumnCount());
    for (int i = 0; i < fields.size(); i++) {
        String field = fields.get(i);
        String adjustedField = adjustFieldName(field);
        SqlColumnType fieldType = fieldTypes.get(i);
        int fieldIndex = rowMetadata.findColumn(adjustedField);
        assertNotEquals(SqlRowMetadata.COLUMN_NOT_FOUND, fieldIndex);
        SqlColumnMetadata columnMetadata = rowMetadata.getColumn(fieldIndex);
        assertEquals(adjustedField, columnMetadata.getName());
        assertEquals(fieldType, columnMetadata.getType());
        assertTrue(columnMetadata.isNullable());
    }
    assertThrows(IndexOutOfBoundsException.class, () -> rowMetadata.getColumn(-1));
    assertThrows(IndexOutOfBoundsException.class, () -> rowMetadata.getColumn(fields.size()));
}
Also used : SqlColumnType(com.hazelcast.sql.SqlColumnType) SqlColumnMetadata(com.hazelcast.sql.SqlColumnMetadata)

Example 4 with SqlColumnMetadata

use of com.hazelcast.sql.SqlColumnMetadata in project hazelcast by hazelcast.

the class SqlConsole method determineColumnWidths.

private static int[] determineColumnWidths(SqlRowMetadata metadata) {
    int colCount = metadata.getColumnCount();
    int[] colWidths = new int[colCount];
    for (int i = 0; i < colCount; i++) {
        SqlColumnMetadata colMetadata = metadata.getColumn(i);
        SqlColumnType type = colMetadata.getType();
        String colName = colMetadata.getName();
        switch(type) {
            case BOOLEAN:
                colWidths[i] = determineColumnWidth(colName, Constants.BOOLEAN_FORMAT_LENGTH);
                break;
            case DATE:
                colWidths[i] = determineColumnWidth(colName, Constants.DATE_FORMAT_LENGTH);
                break;
            case TIMESTAMP_WITH_TIME_ZONE:
                colWidths[i] = determineColumnWidth(colName, Constants.TIMESTAMP_WITH_TIME_ZONE_FORMAT_LENGTH);
                break;
            case DECIMAL:
                colWidths[i] = determineColumnWidth(colName, Constants.DECIMAL_FORMAT_LENGTH);
                break;
            case REAL:
                colWidths[i] = determineColumnWidth(colName, Constants.REAL_FORMAT_LENGTH);
                break;
            case DOUBLE:
                colWidths[i] = determineColumnWidth(colName, Constants.DOUBLE_FORMAT_LENGTH);
                break;
            case INTEGER:
                colWidths[i] = determineColumnWidth(colName, Constants.INTEGER_FORMAT_LENGTH);
                break;
            case NULL:
                colWidths[i] = determineColumnWidth(colName, Constants.NULL_FORMAT_LENGTH);
                break;
            case TINYINT:
                colWidths[i] = determineColumnWidth(colName, Constants.TINYINT_FORMAT_LENGTH);
                break;
            case SMALLINT:
                colWidths[i] = determineColumnWidth(colName, Constants.SMALLINT_FORMAT_LENGTH);
                break;
            case TIMESTAMP:
                colWidths[i] = determineColumnWidth(colName, Constants.TIMESTAMP_FORMAT_LENGTH);
                break;
            case BIGINT:
                colWidths[i] = determineColumnWidth(colName, Constants.BIGINT_FORMAT_LENGTH);
                break;
            case VARCHAR:
                colWidths[i] = determineColumnWidth(colName, Constants.VARCHAR_FORMAT_LENGTH);
                break;
            case OBJECT:
                colWidths[i] = determineColumnWidth(colName, Constants.OBJECT_FORMAT_LENGTH);
                break;
            case JSON:
                colWidths[i] = determineColumnWidth(colName, Constants.JSON_FORMAT_LENGTH);
                break;
            default:
                throw new UnsupportedOperationException(type.toString());
        }
    }
    return colWidths;
}
Also used : SqlColumnMetadata(com.hazelcast.sql.SqlColumnMetadata) SqlColumnType(com.hazelcast.sql.SqlColumnType)

Example 5 with SqlColumnMetadata

use of com.hazelcast.sql.SqlColumnMetadata in project hazelcast by hazelcast.

the class SqlPageCodecTest method check.

private void check(SqlColumnType type, List<Object> values, boolean last) {
    SqlRowMetadata rowMetadata = new SqlRowMetadata(Collections.singletonList(new SqlColumnMetadata("a", type, true)));
    List<SqlRow> rows = new ArrayList<>();
    for (Object value : values) {
        if (SqlPage.convertToData(type) && value != null) {
            value = serializationService.toData(value);
        }
        rows.add(new SqlRowImpl(rowMetadata, new JetSqlRow(TEST_SS, new Object[] { value })));
    }
    SqlPage originalPage = SqlPage.fromRows(Collections.singletonList(type), rows, last, serializationService);
    ClientMessage message = ClientMessage.createForEncode();
    SqlPageCodec.encode(message, originalPage);
    SqlPage restoredPage = SqlPageCodec.decode(message.frameIterator());
    assertEquals(1, restoredPage.getColumnCount());
    assertEquals(values.size(), restoredPage.getRowCount());
    assertEquals(last, restoredPage.isLast());
    assertEquals(1, restoredPage.getColumnTypes().size());
    assertEquals(type, restoredPage.getColumnTypes().get(0));
    for (int i = 0; i < values.size(); i++) {
        Object value = values.get(i);
        Object restoredValue = restoredPage.getColumnValueForClient(0, i);
        if (restoredValue instanceof Data) {
            assertTrue(SqlPage.convertToData(type));
            restoredValue = serializationService.toObject(restoredValue);
        }
        assertEquals(value, restoredValue);
    }
}
Also used : JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) SqlRow(com.hazelcast.sql.SqlRow) SqlRowImpl(com.hazelcast.sql.impl.SqlRowImpl) ArrayList(java.util.ArrayList) Data(com.hazelcast.internal.serialization.Data) SqlRowMetadata(com.hazelcast.sql.SqlRowMetadata) JetSqlRow(com.hazelcast.sql.impl.row.JetSqlRow) ClientMessage(com.hazelcast.client.impl.protocol.ClientMessage) SqlColumnMetadata(com.hazelcast.sql.SqlColumnMetadata) SqlPage(com.hazelcast.sql.impl.client.SqlPage)

Aggregations

SqlColumnMetadata (com.hazelcast.sql.SqlColumnMetadata)11 SqlRowMetadata (com.hazelcast.sql.SqlRowMetadata)5 ArrayList (java.util.ArrayList)5 SqlColumnType (com.hazelcast.sql.SqlColumnType)4 BitmapIndexOptions (com.hazelcast.config.BitmapIndexOptions)2 UniqueKeyTransformation (com.hazelcast.config.BitmapIndexOptions.UniqueKeyTransformation)2 IndexConfig (com.hazelcast.config.IndexConfig)2 IndexType (com.hazelcast.config.IndexType)2 HazelcastInstance (com.hazelcast.core.HazelcastInstance)2 InternalSerializationService (com.hazelcast.internal.serialization.InternalSerializationService)2 Job (com.hazelcast.jet.Job)2 JobStateSnapshot (com.hazelcast.jet.JobStateSnapshot)2 JobConfig (com.hazelcast.jet.config.JobConfig)2 KEY_SQL_QUERY_TEXT (com.hazelcast.jet.config.JobConfigArguments.KEY_SQL_QUERY_TEXT)2 KEY_SQL_UNBOUNDED (com.hazelcast.jet.config.JobConfigArguments.KEY_SQL_UNBOUNDED)2 AbstractJetInstance (com.hazelcast.jet.impl.AbstractJetInstance)2 JetServiceBackend (com.hazelcast.jet.impl.JetServiceBackend)2 Util (com.hazelcast.jet.impl.util.Util)2 Util.getNodeEngine (com.hazelcast.jet.impl.util.Util.getNodeEngine)2 AlterJobPlan (com.hazelcast.jet.sql.impl.SqlPlanImpl.AlterJobPlan)2