Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot insert values double with absolute value less than 0.1 into stream #9046

Closed
s34vv1nd opened this issue Apr 21, 2022 · 1 comment
Closed

Comments

@s34vv1nd
Copy link

s34vv1nd commented Apr 21, 2022

Describe the bug
I cannot insert any double with absolute value less than 0.1 (except 0).
Inserting 0 or -0 or any other number with absolute value more than 0.1 is fine.

Caused by: io.confluent.ksql.schema.utils.SchemaException: DECIMAL precision must be >= scale: DECIMAL(1,2)

To Reproduce

  1. The version of KSQL: 0.24.0
    docker-compose.yml:
schema-registry:
    image: confluentinc/cp-schema-registry:7.0.1
    hostname: schema-registry
    container_name: schema-registry
    depends_on:
      - zookeeper
      - kafka
    ports:
      - "8081:8081"
    environment:
      SCHEMA_REGISTRY_HOST_NAME: schema-registry
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: 'kafka:9092'

  ksqldb-server:
    image: confluentinc/ksqldb-server:0.24.0
    hostname: ksqldb-server
    container_name: ksqldb-server
    depends_on:
      - kafka
      - schema-registry
    ports:
      - "8088:8088"
    environment:
      KSQL_HOST_NAME: ksqldb-server
      KSQL_LISTENERS: http://0.0.0.0:8088
      KSQL_BOOTSTRAP_SERVERS: kafka:9092
      KSQL_KSQL_SCHEMA_REGISTRY_URL: "http://schema-registry:8081"
      KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
      KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"

  ksqldb-cli:
    image: confluentinc/ksqldb-cli:0.24.0
    container_name: ksqldb-cli
    depends_on:
      - kafka
      - ksqldb-server
    entrypoint: /bin/sh
    tty: true
  1. SQL statements:
CREATE OR REPLACE STREAM TEST(test_double DOUBLE) 
WITH(kafka_topic='test', value_format='Json', partitions='1', replicas='1');

INSERT INTO TEST(test_double) VALUES(0.09);

Expected behavior
Should insert successfully into stream and kafka topic.

Actual behaviour

  1. CLI output
ksql> INSERT INTO TEST(test_double) VALUES(0.09);Failed to insert values into 'TEST'. 
Unexpected error generating code for insert value. expression: 0.09
  1. KSQL logs
[2022-04-21 07:47:06,917] INFO Processed unsuccessfully: KsqlRequest{ksql='INSERT INTO TEST(test_double) VALUES(0.09);', configOverrides={}, requestProperties={}, sessionVariables={}, commandSequenceNumber=Optional[954]}, reason:  (io.confluent.ksql.rest.server.resources.KsqlResource:330)
ksqldb-server      | io.confluent.ksql.util.KsqlStatementException: Failed to insert values into 'TEST'. Unexpected error generating code for insert value. expression: 0.09
ksqldb-server      | Statement: INSERT INTO TEST(test_double) VALUES(0.09);
ksqldb-server      |    at io.confluent.ksql.rest.server.execution.InsertValuesExecutor.buildRecord(InsertValuesExecutor.java:254)
ksqldb-server      |    at io.confluent.ksql.rest.server.execution.InsertValuesExecutor.execute(InsertValuesExecutor.java:153)
ksqldb-server      |    at io.confluent.ksql.rest.server.validation.CustomValidators.validate(CustomValidators.java:143)
ksqldb-server      |    at io.confluent.ksql.rest.server.validation.RequestValidator.validate(RequestValidator.java:163)
ksqldb-server      |    at io.confluent.ksql.rest.server.validation.RequestValidator.validate(RequestValidator.java:128)
ksqldb-server      |    at io.confluent.ksql.rest.server.resources.KsqlResource.handleKsqlStatements(KsqlResource.java:286)
ksqldb-server      |    at io.confluent.ksql.rest.server.KsqlServerEndpoints.lambda$executeKsqlRequest$2(KsqlServerEndpoints.java:177)
ksqldb-server      |    at io.confluent.ksql.rest.server.KsqlServerEndpoints.lambda$executeOldApiEndpointOnWorker$23(KsqlServerEndpoints.java:330)
ksqldb-server      |    at io.confluent.ksql.rest.server.KsqlServerEndpoints.lambda$executeOnWorker$22(KsqlServerEndpoints.java:316)
ksqldb-server      |    at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:313)
ksqldb-server      |    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
ksqldb-server      |    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
ksqldb-server      |    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
ksqldb-server      |    at java.base/java.lang.Thread.run(Thread.java:829)
ksqldb-server      | Caused by: java.lang.RuntimeException: Unexpected error generating code for insert value. expression: 0.09
ksqldb-server      |    at io.confluent.ksql.execution.codegen.CodeGenRunner.buildCodeGenFromParseTree(CodeGenRunner.java:173)
ksqldb-server      |    at io.confluent.ksql.execution.codegen.CodeGenRunner.compileExpression(CodeGenRunner.java:122)
ksqldb-server      |    at io.confluent.ksql.execution.codegen.CodeGenRunner.compileExpression(CodeGenRunner.java:114)
ksqldb-server      |    at io.confluent.ksql.engine.generic.GenericExpressionResolver$Visitor.visitExpression(GenericExpressionResolver.java:98)
ksqldb-server      |    at io.confluent.ksql.engine.generic.GenericExpressionResolver$Visitor.visitExpression(GenericExpressionResolver.java:91)
ksqldb-server      |    at io.confluent.ksql.execution.expression.tree.VisitParentExpressionVisitor.visitLiteral(VisitParentExpressionVisitor.java:61)
ksqldb-server      |    at io.confluent.ksql.execution.expression.tree.VisitParentExpressionVisitor.visitDecimalLiteral(VisitParentExpressionVisitor.java:71)
ksqldb-server      |    at io.confluent.ksql.execution.expression.tree.DecimalLiteral.accept(DecimalLiteral.java:49)
ksqldb-server      |    at io.confluent.ksql.execution.expression.tree.ExpressionVisitor.process(ExpressionVisitor.java:21)
ksqldb-server      |    at io.confluent.ksql.engine.generic.GenericExpressionResolver.resolve(GenericExpressionResolver.java:88)
ksqldb-server      |    at io.confluent.ksql.engine.generic.GenericRecordFactory.resolveValues(GenericRecordFactory.java:169)
ksqldb-server      |    at io.confluent.ksql.engine.generic.GenericRecordFactory.build(GenericRecordFactory.java:90)
ksqldb-server      |    at io.confluent.ksql.rest.server.execution.InsertValuesExecutor.buildRecord(InsertValuesExecutor.java:232)
ksqldb-server      |    ... 13 more
ksqldb-server      | Caused by: io.confluent.ksql.schema.utils.SchemaException: DECIMAL precision must be >= scale: DECIMAL(1,2)
ksqldb-server      |    at io.confluent.ksql.schema.ksql.types.SqlDecimal.checkCondition(SqlDecimal.java:168)
ksqldb-server      |    at io.confluent.ksql.schema.ksql.types.SqlDecimal.validateParameters(SqlDecimal.java:50)
ksqldb-server      |    at io.confluent.ksql.schema.ksql.types.SqlDecimal.<init>(SqlDecimal.java:42)
ksqldb-server      |    at io.confluent.ksql.schema.ksql.types.SqlDecimal.of(SqlDecimal.java:34)
ksqldb-server      |    at io.confluent.ksql.schema.ksql.types.SqlTypes.decimal(SqlTypes.java:48)
ksqldb-server      |    at io.confluent.ksql.util.DecimalUtil.fromValue(DecimalUtil.java:283)
ksqldb-server      |    at io.confluent.ksql.execution.codegen.SqlToJavaVisitor$Formatter.visitDecimalLiteral(SqlToJavaVisitor.java:411)
ksqldb-server      |    at io.confluent.ksql.execution.codegen.SqlToJavaVisitor$Formatter.visitDecimalLiteral(SqlToJavaVisitor.java:268)
ksqldb-server      |    at io.confluent.ksql.execution.expression.tree.DecimalLiteral.accept(DecimalLiteral.java:49)
ksqldb-server      |    at io.confluent.ksql.execution.expression.tree.ExpressionVisitor.process(ExpressionVisitor.java:21)
ksqldb-server      |    at io.confluent.ksql.execution.codegen.SqlToJavaVisitor.formatExpression(SqlToJavaVisitor.java:264)
ksqldb-server      |    at io.confluent.ksql.execution.codegen.SqlToJavaVisitor.process(SqlToJavaVisitor.java:258)
ksqldb-server      |    at io.confluent.ksql.execution.codegen.CodeGenRunner.buildCodeGenFromParseTree(CodeGenRunner.java:154)
ksqldb-server      |    ... 25 more
@s34vv1nd
Copy link
Author

Found #8720

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant