This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 267a084aa94 [fix](protocol) CLIENT_MULTI_STATEMENTS not used actually (#39308) 267a084aa94 is described below commit 267a084aa947429a91209ebf54692df62969dae8 Author: camby <camby...@tencent.com> AuthorDate: Wed Aug 14 17:36:47 2024 +0800 [fix](protocol) CLIENT_MULTI_STATEMENTS not used actually (#39308) in pr #6759, we try to output result depend CLIENT_MULTI_STATEMENTS, but in `MysqlProto::negotiate` function, we call `context.setCapability(context.getServerCapability())` function set capability in context use server default flags instead of client flags. So here, we save CLIENT_MULTI_STATEMENTS flag in MysqlChannel like flag CLIENT_DEPRECATE_EOF --- .../src/main/java/org/apache/doris/mysql/MysqlChannel.java | 11 +++++++++++ .../src/main/java/org/apache/doris/mysql/MysqlProto.java | 6 ++++++ .../src/main/java/org/apache/doris/qe/ConnectProcessor.java | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlChannel.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlChannel.java index 61216c0a450..aa640c57eb7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlChannel.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlChannel.java @@ -81,6 +81,9 @@ public class MysqlChannel implements BytesChannel { // mysql flag CLIENT_DEPRECATE_EOF private boolean clientDeprecatedEOF; + // mysql flag CLIENT_MULTI_STATEMENTS + private boolean clientMultiStatements; + private ConnectContext context; protected MysqlChannel() { @@ -95,6 +98,14 @@ public class MysqlChannel implements BytesChannel { return clientDeprecatedEOF; } + public void setClientMultiStatements() { + clientMultiStatements = true; + } + + public boolean clientMultiStatements() { + return clientMultiStatements; + } + public MysqlChannel(StreamConnection connection, ConnectContext context) { Preconditions.checkNotNull(connection); this.sequenceId = 0; diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java index 6544b2d1219..4000ea8bbce 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java @@ -168,6 +168,12 @@ public class MysqlProto { if (capability.isDeprecatedEOF()) { context.getMysqlChannel().setClientDeprecatedEOF(); } + + // we do not save client capability to context, so here we save CLIENT_MULTI_STATEMENTS to MysqlChannel + if (capability.isClientMultiStatements()) { + context.getMysqlChannel().setClientMultiStatements(); + } + MysqlAuthPacket authPacket = new MysqlAuthPacket(); if (!authPacket.readFrom(handshakeResponse)) { ErrorReport.report(ErrorCode.ERR_NOT_SUPPORTED_AUTH_MODE); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java index 8d2a1931b5a..6bcc02f35e0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java @@ -391,7 +391,7 @@ public abstract class ConnectProcessor { // when client not request CLIENT_MULTI_STATEMENTS, mysql treat all query as // single statement. Doris treat it with multi statement, but only return // the last statement result. - if (getConnectContext().getCapability().isClientMultiStatements()) { + if (getConnectContext().getMysqlChannel().clientMultiStatements()) { finalizeCommand(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org