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;
|
||||
REGNAME_DATALIMITEND = 'DataLimitEnd';
|
||||
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';
|
||||
DEFAULT_LOGSQLNUM = 300;
|
||||
REGNAME_LOGSQLWIDTH = 'logsqlwidth';
|
||||
@ -180,11 +184,6 @@ const
|
||||
REGPREFIX_WHERECLAUSE = 'WHERECLAUSE_';
|
||||
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
|
||||
ICONINDEX_PRIMARYKEY = 25;
|
||||
ICONINDEX_FIELD = 42;
|
||||
|
@ -520,7 +520,8 @@ type
|
||||
prefConvertHTMLEntities : Boolean;
|
||||
prefLogsqlnum,
|
||||
prefLogSqlWidth,
|
||||
prefDefaultColWidth : Integer;
|
||||
prefDefaultColWidth,
|
||||
prefLoadSize : Integer;
|
||||
prefCSVSeparator,
|
||||
prefCSVEncloser,
|
||||
prefCSVTerminator : String[10];
|
||||
@ -883,6 +884,7 @@ begin
|
||||
prefCSVTerminator := Mainform.GetRegValue(REGNAME_CSV_TERMINATOR, DEFAULT_CSV_TERMINATOR);
|
||||
prefRememberFilters := Mainform.GetRegValue(REGNAME_REMEMBERFILTERS, DEFAULT_REMEMBERFILTERS);
|
||||
prefPreferShowTables := Mainform.GetRegValue(REGNAME_PREFER_SHOWTABLES, DEFAULT_PREFER_SHOWTABLES);
|
||||
prefLoadSize := Mainform.GetRegValue(REGNAME_LOADSIZE, DEFAULT_LOADSIZE);
|
||||
|
||||
// SQL-Font:
|
||||
fontname := Mainform.GetRegValue(REGNAME_FONTNAME, DEFAULT_FONTNAME);
|
||||
@ -1198,8 +1200,8 @@ begin
|
||||
mainform.CheckBoxLimit.Checked := true;
|
||||
tmpLimitStart := MakeInt(mainform.EditLimitStart.Text);
|
||||
tmpLimitEnd := MakeInt(mainform.EditLimitEnd.Text);
|
||||
if (tmpLimitEnd - tmpLimitStart) > limit then
|
||||
mainform.EditLimitEnd.Text := IntToStr( tmpLimitStart + limit );
|
||||
if tmpLimitEnd > limit then
|
||||
mainform.EditLimitEnd.Text := IntToStr(limit);
|
||||
end;
|
||||
mainform.Repaint;
|
||||
end;
|
||||
@ -3357,9 +3359,9 @@ var
|
||||
msgtext : String;
|
||||
begin
|
||||
// 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
|
||||
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 +
|
||||
'Press' + CRLF +
|
||||
' [Yes] to run the file without loading it into the editor' + CRLF +
|
||||
@ -4190,8 +4192,6 @@ const
|
||||
ROW_SIZE_OVERHEAD : Integer = 1150;
|
||||
// average row size guess for mysql server < 5.0
|
||||
ROW_SIZE_GUESS: Integer = 2048;
|
||||
// round to nearest value when deciding limit
|
||||
ROUNDING: Integer = 1000;
|
||||
begin
|
||||
result := -1;
|
||||
try
|
||||
@ -4205,10 +4205,9 @@ begin
|
||||
AvgRowSize := MakeInt( ds.FieldByName( 'Avg_row_length' ).AsString ) + ROW_SIZE_OVERHEAD;
|
||||
RecordCount := MakeInt( ds.FieldByName( 'Rows' ).AsString );
|
||||
end;
|
||||
if AvgRowSize * RecordCount > LOAD_SIZE then
|
||||
if AvgRowSize * RecordCount > prefLoadSize then
|
||||
begin
|
||||
result := Trunc( LOAD_SIZE / AvgRowSize );
|
||||
result := (Trunc(result / ROUNDING) + 1) * ROUNDING;
|
||||
result := Trunc( prefLoadSize / AvgRowSize );
|
||||
if result >= RecordCount then result := -1;
|
||||
end;
|
||||
ds.Close;
|
||||
|
@ -440,11 +440,18 @@ object optionsform: Toptionsform
|
||||
ImageIndex = 4
|
||||
object Label19: TLabel
|
||||
Left = 8
|
||||
Top = 44
|
||||
Top = 33
|
||||
Width = 177
|
||||
Height = 13
|
||||
Caption = 'Maximum column-width in data-grids:'
|
||||
end
|
||||
object lblLoadSize: TLabel
|
||||
Left = 8
|
||||
Top = 58
|
||||
Width = 196
|
||||
Height = 13
|
||||
Caption = 'Data size for auto calculating LIMIT [KB]:'
|
||||
end
|
||||
object GroupBox2: TGroupBox
|
||||
Left = 0
|
||||
Top = 80
|
||||
@ -522,8 +529,8 @@ object optionsform: Toptionsform
|
||||
end
|
||||
end
|
||||
object editDefaultColWidth: TEdit
|
||||
Left = 188
|
||||
Top = 41
|
||||
Left = 219
|
||||
Top = 30
|
||||
Width = 42
|
||||
Height = 21
|
||||
TabOrder = 1
|
||||
@ -531,8 +538,8 @@ object optionsform: Toptionsform
|
||||
OnChange = Modified
|
||||
end
|
||||
object updownDefaultColWidth: TUpDown
|
||||
Left = 230
|
||||
Top = 41
|
||||
Left = 261
|
||||
Top = 30
|
||||
Width = 16
|
||||
Height = 21
|
||||
Associate = editDefaultColWidth
|
||||
@ -544,7 +551,7 @@ object optionsform: Toptionsform
|
||||
end
|
||||
object chkRememberFilters: TCheckBox
|
||||
Left = 8
|
||||
Top = 12
|
||||
Top = 6
|
||||
Width = 391
|
||||
Height = 17
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
@ -554,6 +561,26 @@ object optionsform: Toptionsform
|
||||
TabOrder = 0
|
||||
OnClick = Modified
|
||||
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
|
||||
object TabSheet5: TTabSheet
|
||||
BorderWidth = 5
|
||||
|
@ -92,6 +92,9 @@ type
|
||||
updownUpdatecheckInterval: TUpDown;
|
||||
chkPreferShowTables: TCheckBox;
|
||||
chkUpdateCheckBuilds: TCheckBox;
|
||||
lblLoadSize: TLabel;
|
||||
editLoadSize: TEdit;
|
||||
updownLoadSize: TUpDown;
|
||||
procedure ButtonCancelClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure Modified(Sender: TObject);
|
||||
@ -173,6 +176,7 @@ begin
|
||||
reg.WriteBool(REGNAME_DO_UPDATECHECK_BUILDS, chkUpdatecheckBuilds.Checked);
|
||||
reg.WriteInteger(REGNAME_UPDATECHECK_INTERVAL, updownUpdatecheckInterval.Position);
|
||||
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
|
||||
if not chkRememberFilters.Checked then begin
|
||||
@ -231,6 +235,7 @@ begin
|
||||
cwin.prefCSVTerminator := self.Edit3.text;
|
||||
cwin.prefConvertHTMLEntities := self.CheckBoxConvertHTMLEntities.Checked;
|
||||
cwin.prefPreferShowTables := chkPreferShowTables.Checked;
|
||||
cwin.prefLoadSize := updownLoadSize.Position * SIZE_KB;
|
||||
end;
|
||||
|
||||
// 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);
|
||||
chkUpdatecheckClick(Sender);
|
||||
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:
|
||||
updownDefaultColWidth.Position := Mainform.GetRegValue(REGNAME_DEFAULTCOLWIDTH, DEFAULT_DEFAULTCOLWIDTH);
|
||||
|
Reference in New Issue
Block a user