This is an automated email from the ASF dual-hosted git repository.
yiguolei 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 21675d651f0 fix flight sql when contains & (#58830)
21675d651f0 is described below
commit 21675d651f081d4142d75785f5efb389a2e9121a
Author: wlong <[email protected]>
AuthorDate: Wed Dec 10 09:54:44 2025 +0800
fix flight sql when contains & (#58830)
### What problem does this PR solve?
fix flight sql when contains &, such as:
select 'a&b' as c
error message:
error org.apache.arrow.adbc.core.AdbcException: Malformed ticket, size:
5
Co-authored-by: wanglong16 <[email protected]>
---
be/src/service/arrow_flight/flight_sql_service.cpp | 5 ++++-
.../org/apache/doris/service/arrowflight/DorisFlightSqlProducer.java | 5 ++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/be/src/service/arrow_flight/flight_sql_service.cpp
b/be/src/service/arrow_flight/flight_sql_service.cpp
index e3390e0b235..e49f355ad30 100644
--- a/be/src/service/arrow_flight/flight_sql_service.cpp
+++ b/be/src/service/arrow_flight/flight_sql_service.cpp
@@ -28,6 +28,7 @@
#include "service/backend_options.h"
#include "util/arrow/utils.h"
#include "util/uid_util.h"
+#include "util/url_coding.h"
namespace doris::flight {
@@ -62,7 +63,9 @@ private:
TNetworkAddress result_addr;
result_addr.hostname = fields[1];
result_addr.port = std::stoi(fields[2]);
- std::string sql = fields[3];
+ const std::string& sql_base64 = fields[3];
+ std::string sql;
+ base64_decode(sql_base64, &sql);
std::shared_ptr<QueryStatement> statement =
std::make_shared<QueryStatement>(queryid, result_addr, sql);
return statement;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/service/arrowflight/DorisFlightSqlProducer.java
b/fe/fe-core/src/main/java/org/apache/doris/service/arrowflight/DorisFlightSqlProducer.java
index 063bc3d46c7..ebc3347f07f 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/service/arrowflight/DorisFlightSqlProducer.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/service/arrowflight/DorisFlightSqlProducer.java
@@ -85,7 +85,9 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -240,7 +242,8 @@ public class DorisFlightSqlProducer implements
FlightSqlProducer, AutoCloseable
// Ticket contains the IP and Brpc Port of the Doris
BE node where the query result is located.
final ByteString handle = ByteString.copyFromUtf8(
DebugUtil.printId(tid) + "&" +
endpointLoc.getResultInternalServiceAddr().hostname + "&"
- +
endpointLoc.getResultInternalServiceAddr().port + "&" + query);
+ +
endpointLoc.getResultInternalServiceAddr().port + "&"
+ +
Base64.getEncoder().encodeToString(query.getBytes(StandardCharsets.UTF_8)));
TicketStatementQuery ticketStatement =
TicketStatementQuery.newBuilder()
.setStatementHandle(handle).build();
Ticket ticket = new
Ticket(Any.pack(ticketStatement).toByteArray());
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]