-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[HUDI-9040] Set the correct table path when renaming tables #12848
base: master
Are you sure you want to change the base?
Conversation
...-common/src/main/scala/org/apache/spark/sql/hudi/command/AlterHoodieTableRenameCommand.scala
Show resolved
Hide resolved
bf455ed
to
5dbee0c
Compare
...park-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/ddl/TestAlterTable.scala
Outdated
Show resolved
Hide resolved
@@ -52,8 +52,7 @@ case class AlterHoodieTableRenameCommand( | |||
// update table properties path in every op | |||
if (hoodieCatalogTable.table.properties.contains("path")) { | |||
val catalogTable = sparkSession.sessionState.catalog.getTableMetadata(newName) | |||
val path = catalogTable.storage.locationUri.get.getPath | |||
AlterTableSetPropertiesCommand(newName, Map("path" -> path), isView).run(sparkSession) | |||
AlterTableSetPropertiesCommand(newName, Map("path" -> catalogTable.location.toString), isView).run(sparkSession) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does the base path of Hudi table change under the hood?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i.e., all files are moved to the new path?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, data files will not be relocated. The issue happened because how we set the path in AlterHoodieTableRenameCommand
may strip the scheme and authority of path in some cases.
assertResult(true)( | ||
newLocation2Path.equals(oldLocation2Path) | ||
oldLocation2.get.equals(newLocation2.get) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the key change in test, we want to ensure the path won't change even with the scheme
Change Logs
Instead of using
catalogTable.storage.locationUri.get.getPath
that could remove scheme and authority, simply usecatalogTable.location
instead when resetting table path in rename command.Impact
none
Risk level (write none, low medium or high below)
low
Documentation Update
none
ticket number here and follow the instruction to make
changes to the website.
Contributor's checklist