Skip to content

Commit 37ca309

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

2 files changed

Lines changed: 23 additions & 6 deletions

File tree

source/dbconnection.pas

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,7 @@ TDBConnection = class(TComponent)
631631
function Has(Item: TFeatureOrRequirement): Boolean;
632632
property SqlProvider: TSqlProvider read FSqlProvider;
633633
property NamedEnums: TStringList read FNamedEnums;
634+
procedure GetColumnDefaultExpressions(Items: TStrings); virtual;
634635
published
635636
property Active: Boolean read FActive write SetActive default False;
636637
property Database: String read FDatabase write SetDatabase;
@@ -772,6 +773,7 @@ TSQLiteConnection = class(TDBConnection)
772773
function GetTableColumns(Table: TDBObject): TTableColumnList; override;
773774
function GetTableKeys(Table: TDBObject): TTableKeyList; override;
774775
function GetTableForeignKeys(Table: TDBObject): TForeignKeyList; override;
776+
procedure GetColumnDefaultExpressions(Items: TStrings); override;
775777
end;
776778

777779
TInterbaseRawResults = Array of TFDQuery;
@@ -6655,6 +6657,14 @@ function TInterbaseConnection.GetTableForeignKeys(Table: TDBObject): TForeignKey
66556657
ForeignQuery.Free;
66566658
end;
66576659

6660+
procedure TSQLiteConnection.GetColumnDefaultExpressions(Items: TStrings);
6661+
begin
6662+
// Add some extra default values allowed for SQLite
6663+
inherited;
6664+
Items.Add('CURRENT_TIME');
6665+
Items.Add('CURRENT_DATE');
6666+
Items.Add('CURRENT_TIMESTAMP');
6667+
end;
66586668

66596669
function TDBConnection.GetTableCheckConstraints(Table: TDBObject): TCheckConstraintList;
66606670
var
@@ -6759,12 +6769,23 @@ function TDBConnection.Has(Item: TFeatureOrRequirement): Boolean;
67596769
frInvisibleColumns: Result := (FParameters.IsMariaDB and (ServerVersionInt >= 100303)) or
67606770
(FParameters.IsMySQL(True) and (ServerVersionInt >= 80023));
67616771
frCompressedColumns: Result := (FParameters.IsMariaDB and (ServerVersionInt >= 100301));
6772+
else Result := False;
67626773
end;
67636774
else Result := False;
67646775
end;
67656776
end;
67666777

67676778

6779+
procedure TDBConnection.GetColumnDefaultExpressions(Items: TStrings);
6780+
var
6781+
SQLFunc: TSQLFunction;
6782+
begin
6783+
for SQLFunc in SQLFunctions do begin
6784+
Items.Add(SQLFunc.Name + SQLFunc.Declaration);
6785+
end;
6786+
end;
6787+
6788+
67686789
function TDBConnection.GetRowCount(Obj: TDBObject; ForceExact: Boolean=False): Int64;
67696790
var
67706791
Rows, QueryApprox, QueryExact: String;

source/grideditlinks.pas

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,9 +1354,7 @@ constructor TColumnDefaultEditorLink.Create(Tree: TVirtualStringTree; AllowEdit:
13541354
FExpressionEdit.Width := FExpressionEdit.Parent.Width - 2*FExpressionEdit.Left;
13551355
FExpressionEdit.OnChange := EditChange;
13561356
FExpressionEdit.DropDownCount := 20;
1357-
for SQLFunc in FTableColumn.Connection.SQLFunctions do begin
1358-
FExpressionEdit.Items.Add(SQLFunc.Name + SQLFunc.Declaration);
1359-
end;
1357+
FTableColumn.Connection.GetColumnDefaultExpressions(FExpressionEdit.Items);
13601358

13611359
FlblOnUpdate := TLabel.Create(FPanel);
13621360
FlblOnUpdate.Parent := FPanel;
@@ -1372,9 +1370,7 @@ constructor TColumnDefaultEditorLink.Create(Tree: TVirtualStringTree; AllowEdit:
13721370
FOnUpdateEdit.Width := FOnUpdateEdit.Parent.Width - 2*FOnUpdateEdit.Left;
13731371
FOnUpdateEdit.OnChange := EditChange;
13741372
FOnUpdateEdit.DropDownCount := 20;
1375-
for SQLFunc in FTableColumn.Connection.SQLFunctions do begin
1376-
FOnUpdateEdit.Items.Add(SQLFunc.Name + SQLFunc.Declaration);
1377-
end;
1373+
FTableColumn.Connection.GetColumnDefaultExpressions(FOnUpdateEdit.Items);
13781374

13791375
FRadioAutoInc := TAllKeysRadioButton.Create(FPanel);
13801376
FRadioAutoInc.Parent := FPanel;

0 commit comments

Comments
 (0)