-
Notifications
You must be signed in to change notification settings - Fork 29.3k
[SPARK-31595][SQL] Spark sql should allow unescaped quote mark in quoted string #28393
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
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -507,6 +507,7 @@ private[hive] class SparkSQLCLIDriver extends CliDriver with Logging { | |
| } | ||
|
|
||
| // Adapted splitSemiColon from Hive 2.3's CliDriver.splitSemiColon. | ||
| // Allow "'" and '"' as closing legal string | ||
| private def splitSemiColon(line: String): JList[String] = { | ||
| var insideSingleQuote = false | ||
| var insideDoubleQuote = false | ||
|
|
@@ -519,13 +520,13 @@ private[hive] class SparkSQLCLIDriver extends CliDriver with Logging { | |
| for (index <- 0 until line.length) { | ||
| if (line.charAt(index) == '\'' && !insideComment) { | ||
| // take a look to see if it is escaped | ||
| if (!escape) { | ||
| if (!escape && !insideDoubleQuote) { | ||
| // flip the boolean variable | ||
| insideSingleQuote = !insideSingleQuote | ||
| } | ||
| } else if (line.charAt(index) == '\"' && !insideComment) { | ||
| // take a look to see if it is escaped | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @adrian-wang Same. |
||
| if (!escape) { | ||
| if (!escape && !insideSingleQuote) { | ||
| // flip the boolean variable | ||
| insideDoubleQuote = !insideDoubleQuote | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -500,4 +500,13 @@ class CliSuite extends SparkFunSuite with BeforeAndAfterAll with BeforeAndAfterE | |
| | ;""".stripMargin -> "testcomment" | ||
| ) | ||
| } | ||
|
|
||
| test("Should allow unescaped quote mark in quoted string") { | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Plz add a prefix |
||
| runCliWithin(1.minute)( | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could you explicitly set false at
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Actually this has nothing to do with
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ur, I got it. I think the option is misleading... Could you remove it from the PR descritpion?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done that, thanks! |
||
| """SELECT '"legal string a';select 1 + 234;""".stripMargin -> "235" | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this an only issue in the thrift server side? How about the spark side?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is not the same case. sql("select 1; select 2;")will return error.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, I see. |
||
| ) | ||
| runCliWithin(1.minute)( | ||
| """SELECT "legal 'string b";select 22222 + 1;""".stripMargin -> "22223" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: let's not use the multiline string style for a single line string.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Updated, thanks! |
||
| ) | ||
| } | ||
| } | ||
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.
@adrian-wang Should we update the comment to reflect the newly added condition?
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.
Yep, maybe we can rephrase this comment here.