Github user attilapiros commented on a diff in the pull request:
https://github.com/apache/spark/pull/20249#discussion_r161480210
--- Diff:
sql/core/src/test/scala/org/apache/spark/sql/execution/command/DDLSuite.scala
---
@@ -1869,6 +1869,65 @@ abstract class DDLSuite extends QueryTest with
SQLTestUtils {
}
}
+ test("SPARK-23057: SET LOCATION for managed table with partition") {
+ withTable("tbl_partition") {
+ withTempDir { dir =>
+ sql("CREATE TABLE tbl_partition(col1 INT, col2 INT) USING parquet
PARTITIONED BY (col1)")
+ sql("INSERT INTO tbl_partition PARTITION(col1=1) SELECT 11")
+ sql("INSERT INTO tbl_partition PARTITION(col1=2) SELECT 22")
+ checkAnswer(spark.table("tbl_partition"), Seq(Row(11, 1), Row(22,
2)))
+ val defaultTablePath = spark.sessionState.catalog
+
.getTableMetadata(TableIdentifier("tbl_partition")).storage.locationUri.get
+ try {
+ // before set location of partition col1 =1 and 2
+ checkPath(defaultTablePath.toString, Map("col1" -> "1"),
"tbl_partition")
+ checkPath(defaultTablePath.toString, Map("col1" -> "2"),
"tbl_partition")
+ val path = dir.getCanonicalPath
+
+ // set location of partition col1 =1
+ sql(s"ALTER TABLE tbl_partition PARTITION (col1='1') SET
LOCATION '$path'")
+ checkPath(dir.getCanonicalPath, Map("col1" -> "1"),
"tbl_partition")
--- End diff --
Consider using the "path" val here for calling "checkPath" method instead
"dir.getCanonicalPath" to be as close to your ALTER as possible when you are
checking its effect or remove the "path" val and use "dir.getCanonicalPath"
everywhere (so avoid unnecessary indirection).
If reason of introducing "path" was the line length restriction then you
can even use multiline string interpolation.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]