Skip to content

Commit 8d865ab

Browse files
committed
address comments
1 parent af271ee commit 8d865ab

File tree

5 files changed

+29
-20
lines changed

5 files changed

+29
-20
lines changed

sql/catalyst/src/main/java/org/apache/spark/sql/connector/catalog/IdentifierImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import java.util.Arrays;
2121
import java.util.Objects;
22+
import java.util.stream.Collectors;
2223
import java.util.stream.Stream;
2324

2425
import com.google.common.base.Preconditions;
@@ -53,8 +54,9 @@ public String name() {
5354

5455
@Override
5556
public String toString() {
56-
return CatalogV2Implicits.quoteNameParts(Stream.concat(
57-
Stream.of(namespace), Stream.of(name)).toArray(String[]::new));
57+
return Stream.concat(Stream.of(namespace), Stream.of(name))
58+
.map(CatalogV2Implicits::quote)
59+
.collect(Collectors.joining("."));
5860
}
5961

6062
@Override

sql/catalyst/src/main/java/org/apache/spark/sql/connector/catalog/TableChange.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,12 @@ public int hashCode() {
299299
}
300300

301301
interface ColumnPosition {
302-
First FIRST = new First();
303302

304-
static ColumnPosition createAfter(String column) {
303+
static ColumnPosition first() {
304+
return First.singleton;
305+
}
306+
307+
static ColumnPosition after(String column) {
305308
return new After(column);
306309
}
307310
}
@@ -312,6 +315,8 @@ static ColumnPosition createAfter(String column) {
312315
* be the first one within the struct.
313316
*/
314317
final class First implements ColumnPosition {
318+
private static First singleton = new First();
319+
315320
private First() {}
316321

317322
@Override
@@ -333,7 +338,7 @@ private After(String column) {
333338
this.column = column;
334339
}
335340

336-
public String getColumn() {
341+
public String column() {
337342
return column;
338343
}
339344

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/AstBuilder.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2806,8 +2806,8 @@ class AstBuilder(conf: SQLConf) extends SqlBaseBaseVisitor[AnyRef] with Logging
28062806

28072807
override def visitColPosition(ctx: ColPositionContext): ColumnPosition = {
28082808
ctx.position.getType match {
2809-
case SqlBaseParser.FIRST => ColumnPosition.FIRST
2810-
case SqlBaseParser.AFTER => ColumnPosition.createAfter(ctx.afterCol.getText)
2809+
case SqlBaseParser.FIRST => ColumnPosition.first()
2810+
case SqlBaseParser.AFTER => ColumnPosition.after(ctx.afterCol.getText)
28112811
}
28122812
}
28132813

sql/catalyst/src/main/scala/org/apache/spark/sql/connector/catalog/CatalogV2Implicits.scala

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,13 @@ private[sql] object CatalogV2Implicits {
8989
}
9090

9191
implicit class IdentifierHelper(ident: Identifier) {
92-
def quoted: String = ident.toString
92+
def quoted: String = {
93+
if (ident.namespace.nonEmpty) {
94+
ident.namespace.map(quote).mkString(".") + "." + quote(ident.name)
95+
} else {
96+
quote(ident.name)
97+
}
98+
}
9399

94100
def asMultipartIdentifier: Seq[String] = ident.namespace :+ ident.name
95101
}
@@ -109,14 +115,10 @@ private[sql] object CatalogV2Implicits {
109115
s"$quoted is not a valid TableIdentifier as it has more than 2 name parts.")
110116
}
111117

112-
def quoted: String = quoteNameParts(parts.toArray)
113-
}
114-
115-
def quoteNameParts(nameParts: Array[String]): String = {
116-
nameParts.map(quote).mkString(".")
118+
def quoted: String = parts.map(quote).mkString(".")
117119
}
118120

119-
private def quote(part: String): String = {
121+
def quote(part: String): String = {
120122
if (part.contains(".") || part.contains("`")) {
121123
s"`${part.replace("`", "``")}`"
122124
} else {

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/parser/DDLParserSuite.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import org.apache.spark.sql.catalyst.analysis.{AnalysisTest, GlobalTempView, Loc
2424
import org.apache.spark.sql.catalyst.catalog.BucketSpec
2525
import org.apache.spark.sql.catalyst.expressions.{EqualTo, Literal}
2626
import org.apache.spark.sql.catalyst.plans.logical._
27-
import org.apache.spark.sql.connector.catalog.TableChange.ColumnPosition.{createAfter, FIRST}
27+
import org.apache.spark.sql.connector.catalog.TableChange.ColumnPosition.{after, first}
2828
import org.apache.spark.sql.connector.expressions.{ApplyTransform, BucketTransform, DaysTransform, FieldReference, HoursTransform, IdentityTransform, LiteralValue, MonthsTransform, Transform, YearsTransform}
2929
import org.apache.spark.sql.internal.SQLConf
3030
import org.apache.spark.sql.types.{IntegerType, LongType, StringType, StructType, TimestampType}
@@ -542,13 +542,13 @@ class DDLParserSuite extends AnalysisTest {
542542
comparePlans(
543543
parsePlan("ALTER TABLE table_name ADD COLUMN x int FIRST"),
544544
AlterTableAddColumnsStatement(Seq("table_name"), Seq(
545-
QualifiedColType(Seq("x"), IntegerType, None, Some(FIRST))
545+
QualifiedColType(Seq("x"), IntegerType, None, Some(first()))
546546
)))
547547

548548
comparePlans(
549549
parsePlan("ALTER TABLE table_name ADD COLUMN x int AFTER y"),
550550
AlterTableAddColumnsStatement(Seq("table_name"), Seq(
551-
QualifiedColType(Seq("x"), IntegerType, None, Some(createAfter("y")))
551+
QualifiedColType(Seq("x"), IntegerType, None, Some(after("y")))
552552
)))
553553
}
554554

@@ -565,7 +565,7 @@ class DDLParserSuite extends AnalysisTest {
565565
parsePlan("ALTER TABLE table_name ADD COLUMN x.y.z int COMMENT 'doc', a.b string FIRST"),
566566
AlterTableAddColumnsStatement(Seq("table_name"), Seq(
567567
QualifiedColType(Seq("x", "y", "z"), IntegerType, Some("doc"), None),
568-
QualifiedColType(Seq("a", "b"), StringType, None, Some(FIRST))
568+
QualifiedColType(Seq("a", "b"), StringType, None, Some(first()))
569569
)))
570570
}
571571

@@ -632,7 +632,7 @@ class DDLParserSuite extends AnalysisTest {
632632
Seq("a", "b", "c"),
633633
None,
634634
None,
635-
Some(FIRST)))
635+
Some(first())))
636636
}
637637

638638
test("alter table: update column type, comment and position") {
@@ -644,7 +644,7 @@ class DDLParserSuite extends AnalysisTest {
644644
Seq("a", "b", "c"),
645645
Some(LongType),
646646
Some("new comment"),
647-
Some(createAfter("d"))))
647+
Some(after("d"))))
648648
}
649649

650650
test("alter table: drop column") {

0 commit comments

Comments
 (0)