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

[Bug] DorisSource createEnumerator error when has filter condition(pushDown) #376

Open
2 of 3 tasks
yingh0ng opened this issue May 6, 2024 · 4 comments
Open
2 of 3 tasks

Comments

@yingh0ng
Copy link

yingh0ng commented May 6, 2024

Search before asking

  • I had searched in the issues and found no similar issues.

Version

1.6.0

What's Wrong?

my sql exsit filter query but column name is "null".
Here is the detailed log:

2024-05-06 09:45:01.836 [flink-akka.actor.default-dispatcher-8970] INFO org.apache.doris.flink.source.DorisSource - Query SQL Sending to Doris FE is: 'select FINISHEDFLAG_, FIELD0006_, FIELD0031_, FIELD0030_ from qixi_ods.ods_dcb850f793dd87c6ae90e3aa81875608 where (null = 4)'.
2024-05-06 09:45:01.836 [flink-akka.actor.default-dispatcher-8970] INFO org.apache.doris.flink.source.DorisSource - Send request to Doris FE 'http://192.168.9.200:8030/api/qixi_ods/ods_dcb850f793dd87c6ae90e3aa81875608/_query_plan' with user 'root'.
2024-05-06 09:45:01.843 [flink-akka.actor.default-dispatcher-8970] ERROR org.apache.doris.flink.source.DorisSource - Doris FE's response cannot map to schema. res: {"exception":"PlannershouldplanjustonlyoneScanNodebutfound[0]","status":500}

Caused by: org.apache.doris.flink.exception.DorisException: Doris FE's response cannot map to schema. res: {"exception":"PlannershouldplanjustonlyoneScanNodebutfound[0]","status":500}
at org.apache.doris.flink.rest.RestService.getQueryPlan(RestService.java:653)
at org.apache.doris.flink.rest.RestService.findPartitions(RestService.java:620)
at org.apache.doris.flink.source.DorisSource.createEnumerator(DorisSource.java:97)
at org.apache.flink.runtime.source.coordinator.SourceCoordinator.start(SourceCoordinator.java:222)

What You Expected?

no error. BTW how to disable the pushdown?

How to Reproduce?

No response

Anything Else?

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

@yingh0ng yingh0ng changed the title [Bug] DorisSource createEnumerator error when has fiter condition(pushDown) [Bug] DorisSource createEnumerator error when has filter condition(pushDown) May 7, 2024
@yingh0ng
Copy link
Author

yingh0ng commented May 7, 2024

How to Reproduce?
I used a founction column in where condition, like:
select a, b, c
from (select a, b, (a+b) as c from tablea)tableb
where c=4;

@Tyxuani
Copy link

Tyxuani commented May 8, 2024

I had the same problem:

Caused by: org.apache.doris.shaded.com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "exception" (class org.apache.doris.flink.rest.models.QueryPlan), not marked as ignorable (3 known properties: "partitions", "status", "opaqued_query_plan"])
 at [Source: (String)"{"exception":"PlannershouldplanjustonlyoneScanNodebutfound[0]","status":500}"; line: 1, column: 15] (through reference chain: org.apache.doris.flink.rest.models.QueryPlan["exception"])
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1127)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2023)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1700)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1678)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:319)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:176)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629)
	at org.apache.doris.shaded.com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3597)
	at org.apache.doris.flink.rest.RestService.getQueryPlan(RestService.java:645)

POST http://doris.xxx.com:8030/api/frontier/stream/_query_plan
basicAuth add db user/name;
body:

{"sql": "select `seq`, `meta_seq`, `latest_seq` from `dba`.`tb1` where (pp_yn = 'Y') AND (null = 1) AND (null = 1) AND ((((((((((((((((((((seq = 1) OR (seq = 2)) OR (seq = 3)) OR (seq = 4)) OR (seq = 8)) OR (seq = 9)) OR (seq = 12)) OR (seq = 13)) OR (seq = 16)) OR (seq = 19)) OR (seq = 23)) OR (seq = 24)) OR (seq = 25)) OR (seq = 26)) OR (seq = 28)) OR (seq = 29)) OR (seq = 30)) OR (seq = 34)) OR (seq = 43)) OR (seq = 44)) AND (latest_seq IS NOT NULL)"}

tb1 DDL like:

CREATE TABLE IF NOT EXISTS dba.tb1(
  `a_seq` BIGINT,
  `created_at` DATETIME,
  `seq` INT,
  `meta_seq` BIGINT,
  `latest_seq` BIGINT,
  `sk` VARCHAR(64),
  `pp_yn` VARCHAR(2),
  `is_aa` tinyint(4) NULL,
  `is_bb` tinyint(4) NULL
)
UNIQUE KEY(`a_seq`, `created_at`)
PARTITION BY RANGE(`created_at`) ()
DISTRIBUTED BY HASH(`a_seq`) BUCKETS 1
PROPERTIES(
  "dynamic_partition.enable" = "true",
  "dynamic_partition.time_unit" = "year",
  "dynamic_partition.start" = "-5",
  "dynamic_partition.end" = "1",
  "dynamic_partition.prefix" = "s_",
  "dynamic_partition.create_history_partition"="true",
  "replication_num" = "3"
);

My original condition contains is_aa = 1 AND is_bb = 1, but been parse to (null = 1) AND (null = 1), that cause the issue.
I want to know what it happen when flink-doris-connecer parse condition, and how to resolve the issue.

@Tyxuani
Copy link

Tyxuani commented May 8, 2024

Resolved this by myself: tinyint is_aa can't use to condition is_aa = 1 , need to define as int.

@vinlee19
Copy link
Contributor

vinlee19 commented May 9, 2024

@yingh0ng @Tyxuani We can communicate on WeChat. Here's my WeChat ID: xyelonx

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

No branches or pull requests

3 participants