Fix ALTER code for modified index names, and added + deleted indexes. Fixes issue #1533.

This commit is contained in:
Ansgar Becker
2009-12-15 00:25:46 +00:00
parent 0d81ddde51
commit 03d7052d78
2 changed files with 12 additions and 5 deletions

View File

@ -3103,6 +3103,7 @@ begin
Key := TTableKey.Create;
Keys.Add(Key);
Key.Name := rx.Match[4];
Key.OldName := Key.Name;
Key.IndexType := rx.Match[2];
if Key.Name = '' then Key.Name := rx.Match[2]; // PRIMARY
if Key.IndexType = '' then Key.IndexType := 'KEY'; // KEY

View File

@ -568,11 +568,11 @@ begin
for i:=0 to FKeys.Count-1 do begin
Mainform.ProgressBarStatus.StepIt;
TblKey := FKeys[i] as TTableKey;
if TblKey.Modified then begin
if TblKey.Modified and (not TblKey.Added) then begin
if TblKey.IndexType = PKEY then
IndexSQL := 'PRIMARY KEY'
else
IndexSQL := 'INDEX ' + Mainform.Mask(TblKey.Name);
IndexSQL := 'INDEX ' + Mainform.Mask(TblKey.OldName);
Specs.Add('DROP '+IndexSQL);
end;
if TblKey.Added or TblKey.Modified then
@ -1252,6 +1252,7 @@ begin
// Add new index
TblKey := TTableKey.Create;
TblKey.Name := 'Index '+IntToStr(FKeys.Count+1);
TblKey.OldName := TblKey.Name;
TblKey.IndexType := KEY;
TblKey.Added := True;
FKeys.Add(TblKey);
@ -1317,7 +1318,8 @@ begin
0: begin
idx := treeIndexes.FocusedNode.Index;
TblKey := FKeys[idx] as TTableKey;
DeletedKeys.Add(TblKey.Name);
if not TblKey.Added then
DeletedKeys.Add(TblKey.OldName);
FKeys.Delete(idx);
end;
1: begin
@ -1339,13 +1341,17 @@ end;
procedure TfrmTableEditor.btnClearIndexesClick(Sender: TObject);
var
i: Integer;
TblKey: TTableKey;
begin
// Clear all indexes
// Column data gets freed below - end any editor which could cause AV's
if treeIndexes.IsEditing then
treeIndexes.CancelEditNode;
for i:=0 to FKeys.Count-1 do
DeletedKeys.Add(TTableKey(FKeys[i]).Name);
for i:=0 to FKeys.Count-1 do begin
TblKey := TTableKey(FKeys[i]);
if not TblKey.Added then
DeletedKeys.Add(TblKey.OldName);
end;
FKeys.Clear;
Modification(Sender);
treeIndexes.Clear;