diff --git a/source/dbconnection.pas b/source/dbconnection.pas index 061441be..66913e7a 100644 --- a/source/dbconnection.pas +++ b/source/dbconnection.pas @@ -97,6 +97,7 @@ type function IsUnique: Boolean; function IsFulltext: Boolean; function IsSpatial: Boolean; + function IsExpression(KeyPart: Integer): Boolean; procedure Modification(Sender: TObject); function SQLCode(TableName: String=''): String; property InsideCreateCode: Boolean read GetInsideCreateCode; @@ -11168,6 +11169,11 @@ begin Result := IndexType = SPATIAL; end; +function TTableKey.IsExpression(KeyPart: Integer): Boolean; +begin + Result := Columns[KeyPart].StartsWith('('); +end; + procedure TTableKey.Modification(Sender: TObject); begin @@ -11223,8 +11229,8 @@ begin end; Result := Result + '('; for i:=0 to Columns.Count-1 do begin - if Columns[i].StartsWith('(') then - Result := Result + Columns[i] // Functional key part with expression wrapped in parentheses + if IsExpression(i) then + Result := Result + Columns[i] // Don't quote functional key part else Result := Result + FConnection.QuoteIdent(Columns[i]); if (SubParts.Count > i) and (SubParts[i] <> '') then diff --git a/source/table_editor.pas b/source/table_editor.pas index 3c11273f..500d05e5 100644 --- a/source/table_editor.pas +++ b/source/table_editor.pas @@ -1944,6 +1944,7 @@ procedure TfrmTableEditor.treeIndexesGetImageIndex(Sender: TBaseVirtualTree; var Ghosted: Boolean; var ImageIndex: TImageIndex); var VT: TVirtualStringTree; + TblKey: TTableKey; begin // Icon image showing type of index VT := Sender as TVirtualStringTree; @@ -1951,7 +1952,13 @@ begin if not (Kind in [ikNormal, ikSelected]) then Exit; case VT.GetNodeLevel(Node) of 0: ImageIndex := FKeys[Node.Index].ImageIndex; - 1: ImageIndex := 42; + 1: begin + TblKey := FKeys[Node.Parent.Index]; + if TblKey.IsExpression(Node.Index) then + ImageIndex := 13 + else + ImageIndex := 42; + end; end; end;