Skip to content

Commit dbadd37

Browse files
committed
feat: support some keywords like CURRENT_TIMESTAMP in SQLite default value drop-down
Refs #2517
1 parent f6c5d2d commit dbadd37

2 files changed

Lines changed: 22 additions & 6 deletions

File tree

source/dbconnection.pas

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ TDBConnection = class(TComponent)
623623
function Has(Item: TFeatureOrRequirement): Boolean;
624624
property SqlProvider: TSqlProvider read FSqlProvider;
625625
property NamedEnums: TStringList read FNamedEnums;
626+
procedure GetColumnDefaultExpressions(Items: TStrings); virtual;
626627
published
627628
property Active: Boolean read FActive write SetActive default False;
628629
property Database: String read FDatabase write SetDatabase;
@@ -768,6 +769,7 @@ TSQLiteConnection = class(TDBConnection)
768769
function GetTableColumns(Table: TDBObject): TTableColumnList; override;
769770
function GetTableKeys(Table: TDBObject): TTableKeyList; override;
770771
function GetTableForeignKeys(Table: TDBObject): TForeignKeyList; override;
772+
procedure GetColumnDefaultExpressions(Items: TStrings); override;
771773
end;
772774

773775
{TInterbaseRawResults = Array of String; // TFDQuery;
@@ -6499,6 +6501,14 @@ function TSQLiteConnection.GetTableForeignKeys(Table: TDBObject): TForeignKeyLis
64996501
ForeignQuery.Free;
65006502
end;}
65016503

6504+
procedure TSQLiteConnection.GetColumnDefaultExpressions(Items: TStrings);
6505+
begin
6506+
// Add some extra default values allowed for SQLite
6507+
inherited;
6508+
Items.Add('CURRENT_TIME');
6509+
Items.Add('CURRENT_DATE');
6510+
Items.Add('CURRENT_TIMESTAMP');
6511+
end;
65026512

65036513
function TDBConnection.GetTableCheckConstraints(Table: TDBObject): TCheckConstraintList;
65046514
var
@@ -6610,6 +6620,16 @@ function TDBConnection.Has(Item: TFeatureOrRequirement): Boolean;
66106620
end;
66116621

66126622

6623+
procedure TDBConnection.GetColumnDefaultExpressions(Items: TStrings);
6624+
var
6625+
SQLFunc: TSQLFunction;
6626+
begin
6627+
for SQLFunc in SQLFunctions do begin
6628+
Items.Add(SQLFunc.Name + SQLFunc.Declaration);
6629+
end;
6630+
end;
6631+
6632+
66136633
function TDBConnection.GetRowCount(Obj: TDBObject; ForceExact: Boolean=False): Int64;
66146634
var
66156635
Rows, QueryApprox, QueryExact: String;

source/grideditlinks.pas

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,9 +1385,7 @@ constructor TColumnDefaultEditorLink.Create(Tree: TVirtualStringTree; AllowEdit:
13851385
FExpressionEdit.Width := FExpressionEdit.Parent.Width - 2*FExpressionEdit.Left;
13861386
FExpressionEdit.OnChange := EditChange;
13871387
FExpressionEdit.DropDownCount := 20;
1388-
for SQLFunc in FTableColumn.Connection.SQLFunctions do begin
1389-
FExpressionEdit.Items.Add(SQLFunc.Name + SQLFunc.Declaration);
1390-
end;
1388+
FTableColumn.Connection.GetColumnDefaultExpressions(FExpressionEdit.Items);
13911389

13921390
FlblOnUpdate := TLabel.Create(FPanel);
13931391
FlblOnUpdate.Parent := FPanel;
@@ -1403,9 +1401,7 @@ constructor TColumnDefaultEditorLink.Create(Tree: TVirtualStringTree; AllowEdit:
14031401
FOnUpdateEdit.Width := FOnUpdateEdit.Parent.Width - 2*FOnUpdateEdit.Left;
14041402
FOnUpdateEdit.OnChange := EditChange;
14051403
FOnUpdateEdit.DropDownCount := 20;
1406-
for SQLFunc in FTableColumn.Connection.SQLFunctions do begin
1407-
FOnUpdateEdit.Items.Add(SQLFunc.Name + SQLFunc.Declaration);
1408-
end;
1404+
FTableColumn.Connection.GetColumnDefaultExpressions(FOnUpdateEdit.Items);
14091405

14101406
FRadioAutoInc := TAllKeysRadioButton.Create(FPanel);
14111407
FRadioAutoInc.Parent := FPanel;

0 commit comments

Comments
 (0)