mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Make datasize in LIMIT calculation configurable via preferences (defaults to 5M). Remove rounding to next 1000 in GetCalculatedLimit to avoid overriding low datasize preference.
This commit is contained in:
@ -56,6 +56,10 @@ const
|
|||||||
DEFAULT_DATALIMITSTART = 0;
|
DEFAULT_DATALIMITSTART = 0;
|
||||||
REGNAME_DATALIMITEND = 'DataLimitEnd';
|
REGNAME_DATALIMITEND = 'DataLimitEnd';
|
||||||
DEFAULT_DATALIMITEND = 5000;
|
DEFAULT_DATALIMITEND = 5000;
|
||||||
|
// how much memory we're aiming to use for the
|
||||||
|
// data grid and it's automatic limit function
|
||||||
|
REGNAME_LOADSIZE = 'DataLoadSize';
|
||||||
|
DEFAULT_LOADSIZE = 5*1024*1024;
|
||||||
REGNAME_LOGSQLNUM = 'logsqlnum';
|
REGNAME_LOGSQLNUM = 'logsqlnum';
|
||||||
DEFAULT_LOGSQLNUM = 300;
|
DEFAULT_LOGSQLNUM = 300;
|
||||||
REGNAME_LOGSQLWIDTH = 'logsqlwidth';
|
REGNAME_LOGSQLWIDTH = 'logsqlwidth';
|
||||||
@ -180,11 +184,6 @@ const
|
|||||||
REGPREFIX_WHERECLAUSE = 'WHERECLAUSE_';
|
REGPREFIX_WHERECLAUSE = 'WHERECLAUSE_';
|
||||||
REGPREFIX_ORDERCLAUSE = 'ORDERCLAUSE_';
|
REGPREFIX_ORDERCLAUSE = 'ORDERCLAUSE_';
|
||||||
|
|
||||||
// how much memory we're aiming to use for the
|
|
||||||
// data grid and it's automatic limit function
|
|
||||||
// this value should probably be user configurable
|
|
||||||
LOAD_SIZE = 5*1024*1024;
|
|
||||||
|
|
||||||
// Various iconindexes
|
// Various iconindexes
|
||||||
ICONINDEX_PRIMARYKEY = 25;
|
ICONINDEX_PRIMARYKEY = 25;
|
||||||
ICONINDEX_FIELD = 42;
|
ICONINDEX_FIELD = 42;
|
||||||
|
@ -520,7 +520,8 @@ type
|
|||||||
prefConvertHTMLEntities : Boolean;
|
prefConvertHTMLEntities : Boolean;
|
||||||
prefLogsqlnum,
|
prefLogsqlnum,
|
||||||
prefLogSqlWidth,
|
prefLogSqlWidth,
|
||||||
prefDefaultColWidth : Integer;
|
prefDefaultColWidth,
|
||||||
|
prefLoadSize : Integer;
|
||||||
prefCSVSeparator,
|
prefCSVSeparator,
|
||||||
prefCSVEncloser,
|
prefCSVEncloser,
|
||||||
prefCSVTerminator : String[10];
|
prefCSVTerminator : String[10];
|
||||||
@ -883,6 +884,7 @@ begin
|
|||||||
prefCSVTerminator := Mainform.GetRegValue(REGNAME_CSV_TERMINATOR, DEFAULT_CSV_TERMINATOR);
|
prefCSVTerminator := Mainform.GetRegValue(REGNAME_CSV_TERMINATOR, DEFAULT_CSV_TERMINATOR);
|
||||||
prefRememberFilters := Mainform.GetRegValue(REGNAME_REMEMBERFILTERS, DEFAULT_REMEMBERFILTERS);
|
prefRememberFilters := Mainform.GetRegValue(REGNAME_REMEMBERFILTERS, DEFAULT_REMEMBERFILTERS);
|
||||||
prefPreferShowTables := Mainform.GetRegValue(REGNAME_PREFER_SHOWTABLES, DEFAULT_PREFER_SHOWTABLES);
|
prefPreferShowTables := Mainform.GetRegValue(REGNAME_PREFER_SHOWTABLES, DEFAULT_PREFER_SHOWTABLES);
|
||||||
|
prefLoadSize := Mainform.GetRegValue(REGNAME_LOADSIZE, DEFAULT_LOADSIZE);
|
||||||
|
|
||||||
// SQL-Font:
|
// SQL-Font:
|
||||||
fontname := Mainform.GetRegValue(REGNAME_FONTNAME, DEFAULT_FONTNAME);
|
fontname := Mainform.GetRegValue(REGNAME_FONTNAME, DEFAULT_FONTNAME);
|
||||||
@ -1198,8 +1200,8 @@ begin
|
|||||||
mainform.CheckBoxLimit.Checked := true;
|
mainform.CheckBoxLimit.Checked := true;
|
||||||
tmpLimitStart := MakeInt(mainform.EditLimitStart.Text);
|
tmpLimitStart := MakeInt(mainform.EditLimitStart.Text);
|
||||||
tmpLimitEnd := MakeInt(mainform.EditLimitEnd.Text);
|
tmpLimitEnd := MakeInt(mainform.EditLimitEnd.Text);
|
||||||
if (tmpLimitEnd - tmpLimitStart) > limit then
|
if tmpLimitEnd > limit then
|
||||||
mainform.EditLimitEnd.Text := IntToStr( tmpLimitStart + limit );
|
mainform.EditLimitEnd.Text := IntToStr(limit);
|
||||||
end;
|
end;
|
||||||
mainform.Repaint;
|
mainform.Repaint;
|
||||||
end;
|
end;
|
||||||
@ -3357,9 +3359,9 @@ var
|
|||||||
msgtext : String;
|
msgtext : String;
|
||||||
begin
|
begin
|
||||||
// Ask for action when loading a big file
|
// Ask for action when loading a big file
|
||||||
if FileExists(filename) and (_GetFileSize( filename ) > LOAD_SIZE) then
|
if FileExists(filename) and (_GetFileSize( filename ) > 5*SIZE_MB) then
|
||||||
begin
|
begin
|
||||||
msgtext := 'The file you are about to load is bigger than '+FormatByteNumber(LOAD_SIZE, 0)+'.' + CRLF + CRLF +
|
msgtext := 'The file you are about to load is bigger than '+FormatByteNumber(5*SIZE_MB, 0)+'.' + CRLF + CRLF +
|
||||||
'Do you want to just run the file to avoid loading it completely into the query-editor ( = memory ) ?' + CRLF + CRLF +
|
'Do you want to just run the file to avoid loading it completely into the query-editor ( = memory ) ?' + CRLF + CRLF +
|
||||||
'Press' + CRLF +
|
'Press' + CRLF +
|
||||||
' [Yes] to run the file without loading it into the editor' + CRLF +
|
' [Yes] to run the file without loading it into the editor' + CRLF +
|
||||||
@ -4190,8 +4192,6 @@ const
|
|||||||
ROW_SIZE_OVERHEAD : Integer = 1150;
|
ROW_SIZE_OVERHEAD : Integer = 1150;
|
||||||
// average row size guess for mysql server < 5.0
|
// average row size guess for mysql server < 5.0
|
||||||
ROW_SIZE_GUESS: Integer = 2048;
|
ROW_SIZE_GUESS: Integer = 2048;
|
||||||
// round to nearest value when deciding limit
|
|
||||||
ROUNDING: Integer = 1000;
|
|
||||||
begin
|
begin
|
||||||
result := -1;
|
result := -1;
|
||||||
try
|
try
|
||||||
@ -4205,10 +4205,9 @@ begin
|
|||||||
AvgRowSize := MakeInt( ds.FieldByName( 'Avg_row_length' ).AsString ) + ROW_SIZE_OVERHEAD;
|
AvgRowSize := MakeInt( ds.FieldByName( 'Avg_row_length' ).AsString ) + ROW_SIZE_OVERHEAD;
|
||||||
RecordCount := MakeInt( ds.FieldByName( 'Rows' ).AsString );
|
RecordCount := MakeInt( ds.FieldByName( 'Rows' ).AsString );
|
||||||
end;
|
end;
|
||||||
if AvgRowSize * RecordCount > LOAD_SIZE then
|
if AvgRowSize * RecordCount > prefLoadSize then
|
||||||
begin
|
begin
|
||||||
result := Trunc( LOAD_SIZE / AvgRowSize );
|
result := Trunc( prefLoadSize / AvgRowSize );
|
||||||
result := (Trunc(result / ROUNDING) + 1) * ROUNDING;
|
|
||||||
if result >= RecordCount then result := -1;
|
if result >= RecordCount then result := -1;
|
||||||
end;
|
end;
|
||||||
ds.Close;
|
ds.Close;
|
||||||
|
@ -440,11 +440,18 @@ object optionsform: Toptionsform
|
|||||||
ImageIndex = 4
|
ImageIndex = 4
|
||||||
object Label19: TLabel
|
object Label19: TLabel
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 44
|
Top = 33
|
||||||
Width = 177
|
Width = 177
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'Maximum column-width in data-grids:'
|
Caption = 'Maximum column-width in data-grids:'
|
||||||
end
|
end
|
||||||
|
object lblLoadSize: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 58
|
||||||
|
Width = 196
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Data size for auto calculating LIMIT [KB]:'
|
||||||
|
end
|
||||||
object GroupBox2: TGroupBox
|
object GroupBox2: TGroupBox
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 80
|
Top = 80
|
||||||
@ -522,8 +529,8 @@ object optionsform: Toptionsform
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object editDefaultColWidth: TEdit
|
object editDefaultColWidth: TEdit
|
||||||
Left = 188
|
Left = 219
|
||||||
Top = 41
|
Top = 30
|
||||||
Width = 42
|
Width = 42
|
||||||
Height = 21
|
Height = 21
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
@ -531,8 +538,8 @@ object optionsform: Toptionsform
|
|||||||
OnChange = Modified
|
OnChange = Modified
|
||||||
end
|
end
|
||||||
object updownDefaultColWidth: TUpDown
|
object updownDefaultColWidth: TUpDown
|
||||||
Left = 230
|
Left = 261
|
||||||
Top = 41
|
Top = 30
|
||||||
Width = 16
|
Width = 16
|
||||||
Height = 21
|
Height = 21
|
||||||
Associate = editDefaultColWidth
|
Associate = editDefaultColWidth
|
||||||
@ -544,7 +551,7 @@ object optionsform: Toptionsform
|
|||||||
end
|
end
|
||||||
object chkRememberFilters: TCheckBox
|
object chkRememberFilters: TCheckBox
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 12
|
Top = 6
|
||||||
Width = 391
|
Width = 391
|
||||||
Height = 17
|
Height = 17
|
||||||
Anchors = [akLeft, akTop, akRight]
|
Anchors = [akLeft, akTop, akRight]
|
||||||
@ -554,6 +561,26 @@ object optionsform: Toptionsform
|
|||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnClick = Modified
|
OnClick = Modified
|
||||||
end
|
end
|
||||||
|
object editLoadSize: TEdit
|
||||||
|
Left = 219
|
||||||
|
Top = 55
|
||||||
|
Width = 42
|
||||||
|
Height = 21
|
||||||
|
TabOrder = 4
|
||||||
|
Text = '1'
|
||||||
|
end
|
||||||
|
object updownLoadSize: TUpDown
|
||||||
|
Left = 261
|
||||||
|
Top = 55
|
||||||
|
Width = 17
|
||||||
|
Height = 21
|
||||||
|
Associate = editLoadSize
|
||||||
|
Min = 1
|
||||||
|
Max = 32767
|
||||||
|
Position = 1
|
||||||
|
TabOrder = 5
|
||||||
|
Wrap = True
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object TabSheet5: TTabSheet
|
object TabSheet5: TTabSheet
|
||||||
BorderWidth = 5
|
BorderWidth = 5
|
||||||
|
@ -92,6 +92,9 @@ type
|
|||||||
updownUpdatecheckInterval: TUpDown;
|
updownUpdatecheckInterval: TUpDown;
|
||||||
chkPreferShowTables: TCheckBox;
|
chkPreferShowTables: TCheckBox;
|
||||||
chkUpdateCheckBuilds: TCheckBox;
|
chkUpdateCheckBuilds: TCheckBox;
|
||||||
|
lblLoadSize: TLabel;
|
||||||
|
editLoadSize: TEdit;
|
||||||
|
updownLoadSize: TUpDown;
|
||||||
procedure ButtonCancelClick(Sender: TObject);
|
procedure ButtonCancelClick(Sender: TObject);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure Modified(Sender: TObject);
|
procedure Modified(Sender: TObject);
|
||||||
@ -173,6 +176,7 @@ begin
|
|||||||
reg.WriteBool(REGNAME_DO_UPDATECHECK_BUILDS, chkUpdatecheckBuilds.Checked);
|
reg.WriteBool(REGNAME_DO_UPDATECHECK_BUILDS, chkUpdatecheckBuilds.Checked);
|
||||||
reg.WriteInteger(REGNAME_UPDATECHECK_INTERVAL, updownUpdatecheckInterval.Position);
|
reg.WriteInteger(REGNAME_UPDATECHECK_INTERVAL, updownUpdatecheckInterval.Position);
|
||||||
reg.WriteBool(REGNAME_PREFER_SHOWTABLES, chkPreferShowTables.Checked);
|
reg.WriteBool(REGNAME_PREFER_SHOWTABLES, chkPreferShowTables.Checked);
|
||||||
|
reg.WriteInteger(REGNAME_LOADSIZE, updownLoadSize.Position*SIZE_KB);
|
||||||
|
|
||||||
// Clean registry from unwanted WHERE clauses if "Remember WHERE filters" was unchecked
|
// Clean registry from unwanted WHERE clauses if "Remember WHERE filters" was unchecked
|
||||||
if not chkRememberFilters.Checked then begin
|
if not chkRememberFilters.Checked then begin
|
||||||
@ -231,6 +235,7 @@ begin
|
|||||||
cwin.prefCSVTerminator := self.Edit3.text;
|
cwin.prefCSVTerminator := self.Edit3.text;
|
||||||
cwin.prefConvertHTMLEntities := self.CheckBoxConvertHTMLEntities.Checked;
|
cwin.prefConvertHTMLEntities := self.CheckBoxConvertHTMLEntities.Checked;
|
||||||
cwin.prefPreferShowTables := chkPreferShowTables.Checked;
|
cwin.prefPreferShowTables := chkPreferShowTables.Checked;
|
||||||
|
cwin.prefLoadSize := updownLoadSize.Position * SIZE_KB;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Settings have been applied, send a signal to the user
|
// Settings have been applied, send a signal to the user
|
||||||
@ -279,6 +284,7 @@ begin
|
|||||||
updownUpdatecheckInterval.Position := Mainform.GetRegValue(REGNAME_UPDATECHECK_INTERVAL, DEFAULT_UPDATECHECK_INTERVAL);
|
updownUpdatecheckInterval.Position := Mainform.GetRegValue(REGNAME_UPDATECHECK_INTERVAL, DEFAULT_UPDATECHECK_INTERVAL);
|
||||||
chkUpdatecheckClick(Sender);
|
chkUpdatecheckClick(Sender);
|
||||||
chkPreferShowTables.Checked := Mainform.GetRegValue(REGNAME_PREFER_SHOWTABLES, DEFAULT_PREFER_SHOWTABLES);
|
chkPreferShowTables.Checked := Mainform.GetRegValue(REGNAME_PREFER_SHOWTABLES, DEFAULT_PREFER_SHOWTABLES);
|
||||||
|
updownLoadSize.Position := Mainform.GetRegValue(REGNAME_LOADSIZE, DEFAULT_LOADSIZE) div SIZE_KB;
|
||||||
|
|
||||||
// Default Column-Width in DBGrids:
|
// Default Column-Width in DBGrids:
|
||||||
updownDefaultColWidth.Position := Mainform.GetRegValue(REGNAME_DEFAULTCOLWIDTH, DEFAULT_DEFAULTCOLWIDTH);
|
updownDefaultColWidth.Position := Mainform.GetRegValue(REGNAME_DEFAULTCOLWIDTH, DEFAULT_DEFAULTCOLWIDTH);
|
||||||
|
Reference in New Issue
Block a user