Search in sources :

Example 1 with AnyToVarcharParameterConverter

use of com.hazelcast.jet.sql.impl.validate.param.AnyToVarcharParameterConverter in project hazelcast by hazelcast.

the class HazelcastConcatOperator method checkOperandTypes.

@Override
public boolean checkOperandTypes(HazelcastCallBinding binding, boolean throwOnFailure) {
    HazelcastSqlValidator validator = binding.getValidator();
    for (int i = 0; i < binding.getOperandCount(); i++) {
        SqlNode operand = binding.operand(i);
        RelDataType operandType = binding.getOperandType(i);
        if (operandType.getSqlTypeName() != VARCHAR) {
            // Coerce everything to VARCHAR
            RelDataType newOperandType = HazelcastTypeUtils.createType(validator.getTypeFactory(), VARCHAR, operandType.isNullable());
            validator.getTypeCoercion().coerceOperandType(binding.getScope(), binding.getCall(), i, newOperandType);
        }
        // Set parameter converters
        if (operand.getKind() == SqlKind.DYNAMIC_PARAM) {
            int paramIndex = ((SqlDynamicParam) operand).getIndex();
            ParameterConverter paramConverter = new AnyToVarcharParameterConverter(paramIndex, operand.getParserPosition());
            validator.setParameterConverter(paramIndex, paramConverter);
        }
    }
    return true;
}
Also used : SqlDynamicParam(org.apache.calcite.sql.SqlDynamicParam) ParameterConverter(com.hazelcast.sql.impl.ParameterConverter) AnyToVarcharParameterConverter(com.hazelcast.jet.sql.impl.validate.param.AnyToVarcharParameterConverter) AnyToVarcharParameterConverter(com.hazelcast.jet.sql.impl.validate.param.AnyToVarcharParameterConverter) HazelcastSqlValidator(com.hazelcast.jet.sql.impl.validate.HazelcastSqlValidator) RelDataType(org.apache.calcite.rel.type.RelDataType) SqlNode(org.apache.calcite.sql.SqlNode)

Example 2 with AnyToVarcharParameterConverter

use of com.hazelcast.jet.sql.impl.validate.param.AnyToVarcharParameterConverter in project hazelcast by hazelcast.

the class HazelcastConcatWSOperator method checkOperandTypes.

@Override
public boolean checkOperandTypes(HazelcastCallBinding binding, boolean throwOnFailure) {
    HazelcastSqlValidator validator = binding.getValidator();
    if (binding.getOperandType(0).getSqlTypeName() != VARCHAR) {
        if (throwOnFailure) {
            throw binding.newValidationSignatureError();
        }
        return false;
    }
    for (int i = 1; i < binding.getOperandCount(); i++) {
        SqlNode operand = binding.operand(i);
        RelDataType operandType = binding.getOperandType(i);
        if (operandType.getSqlTypeName() != VARCHAR) {
            // Coerce everything to VARCHAR
            RelDataType newOperandType = HazelcastTypeUtils.createType(validator.getTypeFactory(), VARCHAR, operandType.isNullable());
            validator.getTypeCoercion().coerceOperandType(binding.getScope(), binding.getCall(), i, newOperandType);
        }
        // Set parameter converters
        if (operand.getKind() == SqlKind.DYNAMIC_PARAM) {
            int paramIndex = ((SqlDynamicParam) operand).getIndex();
            ParameterConverter paramConverter = new AnyToVarcharParameterConverter(paramIndex, operand.getParserPosition());
            validator.setParameterConverter(paramIndex, paramConverter);
        }
    }
    return true;
}
Also used : SqlDynamicParam(org.apache.calcite.sql.SqlDynamicParam) ParameterConverter(com.hazelcast.sql.impl.ParameterConverter) AnyToVarcharParameterConverter(com.hazelcast.jet.sql.impl.validate.param.AnyToVarcharParameterConverter) AnyToVarcharParameterConverter(com.hazelcast.jet.sql.impl.validate.param.AnyToVarcharParameterConverter) HazelcastSqlValidator(com.hazelcast.jet.sql.impl.validate.HazelcastSqlValidator) RelDataType(org.apache.calcite.rel.type.RelDataType) SqlNode(org.apache.calcite.sql.SqlNode)

Aggregations

HazelcastSqlValidator (com.hazelcast.jet.sql.impl.validate.HazelcastSqlValidator)2 AnyToVarcharParameterConverter (com.hazelcast.jet.sql.impl.validate.param.AnyToVarcharParameterConverter)2 ParameterConverter (com.hazelcast.sql.impl.ParameterConverter)2 RelDataType (org.apache.calcite.rel.type.RelDataType)2 SqlDynamicParam (org.apache.calcite.sql.SqlDynamicParam)2 SqlNode (org.apache.calcite.sql.SqlNode)2