Skip to content

Commit 9f1e536

Browse files
authored
fix(glue): report destination table on rename create failure (#1997)
fixed report description in rename table
1 parent 0e978d2 commit 9f1e536

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

catalog/glue/glue.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ func (c *Catalog) RenameTable(ctx context.Context, from, to table.Identifier) (*
498498
TableInput: glueTableInput(toTable, fromGlueTable),
499499
})
500500
if err != nil {
501-
return nil, fmt.Errorf("failed to create the table %s.%s: %w", fromDatabase, fromTable, err)
501+
return nil, fmt.Errorf("failed to create the table %s.%s: %w", toDatabase, toTable, err)
502502
}
503503

504504
// Claim the source with a conditional update before issuing Glue's

catalog/glue/glue_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,53 @@ func TestGlueRenameTable(t *testing.T) {
14791479
assert.True(testSchema.Equals(renamedTable.Schema()))
14801480
}
14811481

1482+
func TestGlueRenameTable_CreateTableFailureUsesDestinationName(t *testing.T) {
1483+
assert := require.New(t)
1484+
1485+
mockGluesvc := &mockGlueClient{}
1486+
1487+
mockGluesvc.On("GetDatabase", mock.Anything, &glue.GetDatabaseInput{
1488+
Name: aws.String("new_test_database"),
1489+
}, mock.Anything).Return(&glue.GetDatabaseOutput{
1490+
Database: &types.Database{
1491+
Name: aws.String("new_test_database"),
1492+
},
1493+
}, nil).Once()
1494+
1495+
mockGluesvc.On("GetTable", mock.Anything, &glue.GetTableInput{
1496+
DatabaseName: aws.String("test_database"),
1497+
Name: aws.String("test_table"),
1498+
}, mock.Anything).Return(&glue.GetTableOutput{
1499+
Table: &types.Table{
1500+
Name: aws.String("test_table"),
1501+
TableType: aws.String("EXTERNAL_TABLE"),
1502+
VersionId: aws.String("v1"),
1503+
Parameters: map[string]string{
1504+
tableParamTableType: glueTypeIceberg,
1505+
tableParamMetadataLocation: "s3://test-bucket/test_table/metadata/abvc123-123.metadata.json",
1506+
},
1507+
StorageDescriptor: &types.StorageDescriptor{},
1508+
},
1509+
}, nil).Once()
1510+
1511+
mockGluesvc.On("CreateTable", mock.Anything, mock.Anything, mock.Anything).
1512+
Return(&glue.CreateTableOutput{}, errors.New("create table failed")).Once()
1513+
1514+
glueCatalog := &Catalog{
1515+
glueSvc: mockGluesvc,
1516+
}
1517+
1518+
renamedTable, err := glueCatalog.RenameTable(
1519+
context.TODO(),
1520+
TableIdentifier("test_database", "test_table"),
1521+
TableIdentifier("new_test_database", "new_test_table"),
1522+
)
1523+
1524+
assert.ErrorContains(err, "failed to create the table new_test_database.new_test_table")
1525+
assert.Nil(renamedTable)
1526+
mockGluesvc.AssertExpectations(t)
1527+
}
1528+
14821529
func TestGlueRenameTable_DeleteTableFailureRollback(t *testing.T) {
14831530
assert := require.New(t)
14841531

0 commit comments

Comments
 (0)