mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Issue #135: basic support for ClickHouse MySQL protocol
This commit is contained in:
BIN
res/icons/server-clickhouse.png
Normal file
BIN
res/icons/server-clickhouse.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 594 B |
@ -1430,7 +1430,7 @@ begin
|
|||||||
editUsername.Enabled := lblUsername.Enabled;
|
editUsername.Enabled := lblUsername.Enabled;
|
||||||
lblPassword.Enabled := lblUsername.Enabled;
|
lblPassword.Enabled := lblUsername.Enabled;
|
||||||
editPassword.Enabled := lblUsername.Enabled;
|
editPassword.Enabled := lblUsername.Enabled;
|
||||||
lblPort.Enabled := Params.NetType in [ntMySQL_TCPIP, ntMySQL_SSHtunnel, ntMySQL_ProxySQLAdmin, ntMSSQL_TCPIP, ntPgSQL_TCPIP, ntPgSQL_SSHtunnel];
|
lblPort.Enabled := Params.NetType in [ntMySQL_TCPIP, ntMySQL_SSHtunnel, ntMySQL_ProxySQLAdmin, ntMySQL_ClickHouse, ntMSSQL_TCPIP, ntPgSQL_TCPIP, ntPgSQL_SSHtunnel];
|
||||||
editPort.Enabled := lblPort.Enabled;
|
editPort.Enabled := lblPort.Enabled;
|
||||||
updownPort.Enabled := lblPort.Enabled;
|
updownPort.Enabled := lblPort.Enabled;
|
||||||
chkCompressed.Enabled := Params.IsAnyMySQL;
|
chkCompressed.Enabled := Params.IsAnyMySQL;
|
||||||
@ -1440,7 +1440,7 @@ begin
|
|||||||
// SSH tunnel tab:
|
// SSH tunnel tab:
|
||||||
tabSSHtunnel.TabVisible := Params.NetType in [ntMySQL_SSHtunnel, ntPgSQL_SSHtunnel];
|
tabSSHtunnel.TabVisible := Params.NetType in [ntMySQL_SSHtunnel, ntPgSQL_SSHtunnel];
|
||||||
// Advanced tab:
|
// Advanced tab:
|
||||||
chkWantSSL.Enabled := Params.NetType in [ntMySQL_TCPIP, ntMySQL_SSHtunnel, ntMySQL_ProxySQLAdmin, ntPgSQL_TCPIP, ntPgSQL_SSHtunnel];
|
chkWantSSL.Enabled := Params.NetType in [ntMySQL_TCPIP, ntMySQL_SSHtunnel, ntMySQL_ProxySQLAdmin, ntMySQL_ClickHouse, ntPgSQL_TCPIP, ntPgSQL_SSHtunnel];
|
||||||
lblSSLPrivateKey.Enabled := Params.WantSSL;
|
lblSSLPrivateKey.Enabled := Params.WantSSL;
|
||||||
editSSLPrivateKey.Enabled := Params.WantSSL;
|
editSSLPrivateKey.Enabled := Params.WantSSL;
|
||||||
lblSSLCACertificate.Enabled := Params.WantSSL;
|
lblSSLCACertificate.Enabled := Params.WantSSL;
|
||||||
|
@ -271,7 +271,8 @@ type
|
|||||||
ntPgSQL_TCPIP,
|
ntPgSQL_TCPIP,
|
||||||
ntPgSQL_SSHtunnel,
|
ntPgSQL_SSHtunnel,
|
||||||
ntSQLite,
|
ntSQLite,
|
||||||
ntMySQL_ProxySQLAdmin
|
ntMySQL_ProxySQLAdmin,
|
||||||
|
ntMySQL_ClickHouse
|
||||||
);
|
);
|
||||||
TNetTypeGroup = (ngMySQL, ngMSSQL, ngPgSQL, ngSQLite);
|
TNetTypeGroup = (ngMySQL, ngMSSQL, ngPgSQL, ngSQLite);
|
||||||
TNetGroupLibs = TDictionary<TNetTypeGroup, TStringList>;
|
TNetGroupLibs = TDictionary<TNetTypeGroup, TStringList>;
|
||||||
@ -314,6 +315,7 @@ type
|
|||||||
function IsInfiniDB: Boolean;
|
function IsInfiniDB: Boolean;
|
||||||
function IsInfobright: Boolean;
|
function IsInfobright: Boolean;
|
||||||
function IsProxySQLAdmin: Boolean;
|
function IsProxySQLAdmin: Boolean;
|
||||||
|
function IsClickHouse: Boolean;
|
||||||
function IsAzure: Boolean;
|
function IsAzure: Boolean;
|
||||||
function IsMemSQL: Boolean;
|
function IsMemSQL: Boolean;
|
||||||
function IsRedshift: Boolean;
|
function IsRedshift: Boolean;
|
||||||
@ -1471,6 +1473,7 @@ function TConnectionParameters.NetTypeName(LongFormat: Boolean): String;
|
|||||||
const
|
const
|
||||||
PrefixMysql = 'MariaDB or MySQL';
|
PrefixMysql = 'MariaDB or MySQL';
|
||||||
PrefixProxysql = 'ProxySQL Admin';
|
PrefixProxysql = 'ProxySQL Admin';
|
||||||
|
PrefixClickhouse = 'ClickHouse MySQL';
|
||||||
PrefixMssql = 'Microsoft SQL Server';
|
PrefixMssql = 'Microsoft SQL Server';
|
||||||
PrefixPostgres = 'PostgreSQL';
|
PrefixPostgres = 'PostgreSQL';
|
||||||
PrefixRedshift = 'Redshift PG';
|
PrefixRedshift = 'Redshift PG';
|
||||||
@ -1485,6 +1488,7 @@ begin
|
|||||||
ntMySQL_NamedPipe: Result := PrefixMysql+' (named pipe)';
|
ntMySQL_NamedPipe: Result := PrefixMysql+' (named pipe)';
|
||||||
ntMySQL_SSHtunnel: Result := PrefixMysql+' (SSH tunnel)';
|
ntMySQL_SSHtunnel: Result := PrefixMysql+' (SSH tunnel)';
|
||||||
ntMySQL_ProxySQLAdmin: Result := PrefixProxysql+' (Experimental)';
|
ntMySQL_ProxySQLAdmin: Result := PrefixProxysql+' (Experimental)';
|
||||||
|
ntMySQL_ClickHouse: Result := PrefixClickhouse+' (Experimental)';
|
||||||
ntMSSQL_NamedPipe: Result := PrefixMssql+' (named pipe)';
|
ntMSSQL_NamedPipe: Result := PrefixMssql+' (named pipe)';
|
||||||
ntMSSQL_TCPIP: Result := PrefixMssql+' (TCP/IP)';
|
ntMSSQL_TCPIP: Result := PrefixMssql+' (TCP/IP)';
|
||||||
ntMSSQL_SPX: Result := PrefixMssql+' (SPX/IPX)';
|
ntMSSQL_SPX: Result := PrefixMssql+' (SPX/IPX)';
|
||||||
@ -1505,6 +1509,7 @@ begin
|
|||||||
else if IsInfobright then Result := 'Infobright'
|
else if IsInfobright then Result := 'Infobright'
|
||||||
else if IsMemSQL then Result := 'MemSQL'
|
else if IsMemSQL then Result := 'MemSQL'
|
||||||
else if IsProxySQLAdmin then Result := 'ProxySQL Admin'
|
else if IsProxySQLAdmin then Result := 'ProxySQL Admin'
|
||||||
|
else if IsClickHouse then Result := 'ClickHouse MySQL'
|
||||||
else if IsMySQL(True) then Result := 'MySQL'
|
else if IsMySQL(True) then Result := 'MySQL'
|
||||||
else Result := PrefixMysql;
|
else Result := PrefixMysql;
|
||||||
end;
|
end;
|
||||||
@ -1529,7 +1534,7 @@ end;
|
|||||||
function TConnectionParameters.GetNetTypeGroup: TNetTypeGroup;
|
function TConnectionParameters.GetNetTypeGroup: TNetTypeGroup;
|
||||||
begin
|
begin
|
||||||
case FNetType of
|
case FNetType of
|
||||||
ntMySQL_TCPIP, ntMySQL_NamedPipe, ntMySQL_SSHtunnel, ntMySQL_ProxySQLAdmin:
|
ntMySQL_TCPIP, ntMySQL_NamedPipe, ntMySQL_SSHtunnel, ntMySQL_ProxySQLAdmin, ntMySQL_ClickHouse:
|
||||||
Result := ngMySQL;
|
Result := ngMySQL;
|
||||||
ntMSSQL_NamedPipe, ntMSSQL_TCPIP, ntMSSQL_SPX, ntMSSQL_VINES, ntMSSQL_RPC:
|
ntMSSQL_NamedPipe, ntMSSQL_TCPIP, ntMSSQL_SPX, ntMSSQL_VINES, ntMSSQL_RPC:
|
||||||
Result := ngMSSQL;
|
Result := ngMSSQL;
|
||||||
@ -1589,6 +1594,7 @@ begin
|
|||||||
and (not IsInfiniDB)
|
and (not IsInfiniDB)
|
||||||
and (not IsInfobright)
|
and (not IsInfobright)
|
||||||
and (not IsProxySQLAdmin)
|
and (not IsProxySQLAdmin)
|
||||||
|
and (not IsClickHouse)
|
||||||
and (not IsMemSQL);
|
and (not IsMemSQL);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1624,6 +1630,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function TConnectionParameters.IsClickHouse: Boolean;
|
||||||
|
begin
|
||||||
|
Result := NetType = ntMySQL_ClickHouse;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TConnectionParameters.IsAzure: Boolean;
|
function TConnectionParameters.IsAzure: Boolean;
|
||||||
begin
|
begin
|
||||||
Result := IsAnyMSSQL and (Pos('azure', LowerCase(ServerVersion)) > 0);
|
Result := IsAnyMSSQL and (Pos('azure', LowerCase(ServerVersion)) > 0);
|
||||||
@ -1655,7 +1667,8 @@ begin
|
|||||||
else if IsInfiniDB then Result := 172
|
else if IsInfiniDB then Result := 172
|
||||||
else if IsInfobright then Result := 173
|
else if IsInfobright then Result := 173
|
||||||
else if IsMemSQL then Result := 194
|
else if IsMemSQL then Result := 194
|
||||||
else if IsProxySQLAdmin then Result := 197;
|
else if IsProxySQLAdmin then Result := 197
|
||||||
|
else if IsClickHouse then Result := 203;
|
||||||
end;
|
end;
|
||||||
ngMSSQL: begin
|
ngMSSQL: begin
|
||||||
Result := 123;
|
Result := 123;
|
||||||
@ -1679,6 +1692,8 @@ begin
|
|||||||
ngMySQL: begin
|
ngMySQL: begin
|
||||||
if IsProxySQLAdmin then
|
if IsProxySQLAdmin then
|
||||||
Result := 6032
|
Result := 6032
|
||||||
|
else if IsClickHouse then
|
||||||
|
Result := 8123 // todo: is that correct?
|
||||||
else
|
else
|
||||||
Result := 3306;
|
Result := 3306;
|
||||||
end;
|
end;
|
||||||
@ -2100,7 +2115,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
case FParameters.NetType of
|
case FParameters.NetType of
|
||||||
ntMySQL_TCPIP, ntMySQL_ProxySQLAdmin: begin
|
ntMySQL_TCPIP, ntMySQL_ProxySQLAdmin, ntMySQL_ClickHouse: begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ntMySQL_NamedPipe: begin
|
ntMySQL_NamedPipe: begin
|
||||||
@ -2886,7 +2901,7 @@ begin
|
|||||||
except // silently fail if IS does not exist, on super old servers
|
except // silently fail if IS does not exist, on super old servers
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if (ServerVersionInt >= 50124) and (not Parameters.IsProxySQLAdmin) then
|
if (ServerVersionInt >= 50124) and (not Parameters.IsProxySQLAdmin) and (not Parameters.IsClickHouse) then
|
||||||
FSQLSpecifities[spLockedTables] := 'SHOW OPEN TABLES FROM %s WHERE '+QuoteIdent('in_use')+'!=0';
|
FSQLSpecifities[spLockedTables] := 'SHOW OPEN TABLES FROM %s WHERE '+QuoteIdent('in_use')+'!=0';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3783,7 +3798,7 @@ begin
|
|||||||
if FThreadId = 0 then begin
|
if FThreadId = 0 then begin
|
||||||
Ping(False);
|
Ping(False);
|
||||||
if FActive then begin
|
if FActive then begin
|
||||||
if Parameters.IsProxySQLAdmin then
|
if Parameters.IsProxySQLAdmin or Parameters.IsClickHouse then
|
||||||
FThreadID := FLib.mysql_thread_id(FHandle)
|
FThreadID := FLib.mysql_thread_id(FHandle)
|
||||||
else
|
else
|
||||||
FThreadID := StrToInt64Def(GetVar('SELECT CONNECTION_ID()'), 0);
|
FThreadID := StrToInt64Def(GetVar('SELECT CONNECTION_ID()'), 0);
|
||||||
|
@ -16867,6 +16867,32 @@ object MainForm: TMainForm
|
|||||||
518BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562
|
518BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562
|
||||||
891891FF012639FDF74190BB900000000049454E44AE426082}
|
891891FF012639FDF74190BB900000000049454E44AE426082}
|
||||||
end>
|
end>
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Name = 'server-clickhouse'
|
||||||
|
SourceImages = <
|
||||||
|
item
|
||||||
|
Image.Data = {
|
||||||
|
89504E470D0A1A0A0000000D494844520000006400000064080600000070E295
|
||||||
|
54000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
|
||||||
|
00097048597300000EC300000EC301C76FA864000001E749444154785EEDDC31
|
||||||
|
2E445114C6F173995A6B190A0A85C226A814347A16424DA36711140AC5CC0AAC
|
||||||
|
C00A34E4B9312F9148CCDC77E324FFE2FF939BF79E6A3227DF775E356598C710
|
||||||
|
6DDEA3C44ED98DD7F1F94FC34BCCEADF63BD3D58FE67ADE3B2170FE3FD4AC322
|
||||||
|
AEEA27BE181F572B715D3FEFE5F8B452FD1E8EEAE57EF9B4D6737CC461D98FCF
|
||||||
|
F1F9DF6C8C57413810180702E34060B206D2FAA2A05FB20652C6AB26B2B260AC
|
||||||
|
2C181302E340605CEA30EE10181302E30E81B1B2604C088C3B04C684C0B84360
|
||||||
|
AC2C1813026342605CEA3056168C09817187C058593056168C95056365C19810
|
||||||
|
181302634260B206A24E56168C95056342604C088C09813121C986456C0DF338
|
||||||
|
A9E7B4E598907CDBF5DCD673D772B206A24E56168C95056342604C088C4B1DC6
|
||||||
|
81C03810180702933510DFB23A650DC4B7AC4E56168C95056365C19810181302
|
||||||
|
634260B206A21F6FF59CD773D672B27EFB7D3366F1546FFDEDF789AC2C18973A
|
||||||
|
8C09813121302604C684C0640D449DAC2C182B0BC684C0981018973A8C038171
|
||||||
|
20300E04266B20BE6575CA1A886F599DAC2C182B0BC6CA823121302604C684C0
|
||||||
|
640D449DAC2C182B0B66E3FB776AA69C3626A4D3B481DCD4D3C684747287C0B8
|
||||||
|
43604C084CD640D4C9CA82B1B2604C088C098171A9C3381018078212F1058BDE
|
||||||
|
7DE51C4B5BF00000000049454E44AE426082}
|
||||||
|
end>
|
||||||
end>
|
end>
|
||||||
Left = 593
|
Left = 593
|
||||||
Top = 339
|
Top = 339
|
||||||
@ -24636,6 +24662,32 @@ object MainForm: TMainForm
|
|||||||
518BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562
|
518BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562
|
||||||
891891FF012639FDF74190BB900000000049454E44AE426082}
|
891891FF012639FDF74190BB900000000049454E44AE426082}
|
||||||
end>
|
end>
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Name = 'server-clickhouse'
|
||||||
|
SourceImages = <
|
||||||
|
item
|
||||||
|
Image.Data = {
|
||||||
|
89504E470D0A1A0A0000000D494844520000006400000064080600000070E295
|
||||||
|
54000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
|
||||||
|
00097048597300000EC300000EC301C76FA864000001E749444154785EEDDC31
|
||||||
|
2E445114C6F173995A6B190A0A85C226A814347A16424DA36711140AC5CC0AAC
|
||||||
|
C00A34E4B9312F9148CCDC77E324FFE2FF939BF79E6A3227DF775E356598C710
|
||||||
|
6DDEA3C44ED98DD7F1F94FC34BCCEADF63BD3D58FE67ADE3B2170FE3FD4AC322
|
||||||
|
AEEA27BE181F572B715D3FEFE5F8B452FD1E8EEAE57EF9B4D6737CC461D98FCF
|
||||||
|
F1F9DF6C8C57413810180702E34060B206D2FAA2A05FB20652C6AB26B2B260AC
|
||||||
|
2C181302E340605CEA30EE10181302E30E81B1B2604C088C3B04C684C0B84360
|
||||||
|
AC2C1813026342605CEA3056168C09817187C058593056168C95056365C19810
|
||||||
|
181302634260B206A24E56168C95056342604C088C09813121C986456C0DF338
|
||||||
|
A9E7B4E598907CDBF5DCD673D772B206A24E56168C95056342604C088C4B1DC6
|
||||||
|
81C03810180702933510DFB23A650DC4B7AC4E56168C95056365C19810181302
|
||||||
|
634260B206A21F6FF59CD773D672B27EFB7D3366F1546FFDEDF789AC2C18973A
|
||||||
|
8C09813121302604C684C0640D449DAC2C182B0BC684C0981018973A8C038171
|
||||||
|
20300E04266B20BE6575CA1A886F599DAC2C182B0BC6CA823121302604C684C0
|
||||||
|
640D449DAC2C182B0B66E3FB776AA69C3626A4D3B481DCD4D3C684747287C0B8
|
||||||
|
43604C084CD640D4C9CA82B1B2604C088C098171A9C3381018078212F1058BDE
|
||||||
|
7DE51C4B5BF00000000049454E44AE426082}
|
||||||
|
end>
|
||||||
end>
|
end>
|
||||||
Left = 689
|
Left = 689
|
||||||
Top = 339
|
Top = 339
|
||||||
|
Reference in New Issue
Block a user