[Bug] Optimize querying from PostgreSQL and MySQL compatibility (#5741)

1. Use the param `UseDeclareFetch` to fix the memory consumption of PostgreSQL Driver
2. Fix the bug of mysql client 5.1 query failed Doris
This commit is contained in:
HappenLee
2021-05-04 21:19:50 -05:00
committed by GitHub
parent eb1fdd019d
commit 04d12fbb00
2 changed files with 6 additions and 2 deletions

View File

@ -274,7 +274,7 @@ public class OdbcTable extends Table {
"utf8");
break;
case POSTGRESQL:
connectString = String.format("Driver=%s;Server=%s;Port=%s;DataBase=%s;Uid=%s;Pwd=%s;charset=%s",
connectString = String.format("Driver=%s;Server=%s;Port=%s;DataBase=%s;Uid=%s;Pwd=%s;charset=%s;UseDeclareFetch=1;Fetch=4096",
getOdbcDriver(),
getHost(),
getPort(),
@ -282,6 +282,7 @@ public class OdbcTable extends Table {
getUserName(),
getPasswd(),
"utf8");
break;
case MYSQL:
connectString = String.format("Driver=%s;Server=%s;Port=%s;DataBase=%s;Uid=%s;Pwd=%s;charset=%s;forward_cursor=1;no_cache=1",
getOdbcDriver(),

View File

@ -172,7 +172,10 @@ public class MysqlProto {
// with password.
// So Doris support the Protocol::AuthSwitchRequest to tell client to keep the default password plugin
// which Doris is using now.
if (!handshakePacket.checkAuthPluginSameAsDoris(authPacket.getPluginName())) {
// Note: Check the authPacket whether support plugin auth firstly, before we check AuthPlugin between doris and client
// to compatible with older version: like mysql 5.1
if (authPacket.getCapability().isPluginAuth() &&
!handshakePacket.checkAuthPluginSameAsDoris(authPacket.getPluginName())) {
// 1. clear the serializer
serializer.reset();
// 2. build the auth switch request and send to the client