beliefer commented on a change in pull request #31293: URL: https://github.com/apache/spark/pull/31293#discussion_r565124177
########## File path: sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryParsingErrors.scala ########## @@ -0,0 +1,328 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.errors + +import org.antlr.v4.runtime.ParserRuleContext + +import org.apache.spark.sql.catalyst.parser.ParseException +import org.apache.spark.sql.catalyst.parser.SqlBaseParser._ +import org.apache.spark.sql.catalyst.trees.Origin + +/** + * Object for grouping all error messages of the query parsing. + * Currently it includes all ParseException. + */ +object QueryParsingErrors { + + def invalidInsertIntoError(ctx: InsertIntoContext): Throwable = { + new ParseException("Invalid InsertIntoContext", ctx) + } + + def insertOverwriteDirectoryUnsupportedError(ctx: InsertIntoContext): Throwable = { + new ParseException("INSERT OVERWRITE DIRECTORY is not supported", ctx) + } + + def columnAliasInOperationNotAllowedError(op: String, ctx: TableAliasContext): Throwable = { + new ParseException(s"Columns aliases are not allowed in $op.", ctx.identifierList()) + } + + def emptySourceForMergeError(ctx: MergeIntoTableContext): Throwable = { + new ParseException("Empty source for merge: you should specify a source" + + " table/subquery in merge.", ctx.source) + } + + def unrecognizedMatchedActionError(ctx: MatchedClauseContext): Throwable = { + new ParseException( + s"Unrecognized matched action: ${ctx.matchedAction().getText}", + ctx.matchedAction()) + } + + def insertValueNumberNotMatchFieldNumberError(ctx: NotMatchedClauseContext): Throwable = { + new ParseException("The number of inserted values cannot match the fields.", + ctx.notMatchedAction()) + } + + def unrecognizedNotMatchedActionError(ctx: NotMatchedClauseContext): Throwable = { + new ParseException( + s"Unrecognized not matched action: ${ctx.notMatchedAction().getText}", + ctx.notMatchedAction()) + } + + def mergeStatementNotExistWhenClauseError(ctx: MergeIntoTableContext): Throwable = { + new ParseException("There must be at least one WHEN clause in a MERGE statement", ctx) + } + + def nonLastMatchedClauseOmitConditionError(ctx: MergeIntoTableContext): Throwable = { + new ParseException("When there are more than one MATCHED clauses in a MERGE " + + "statement, only the last MATCHED clause can omit the condition.", ctx) + } + + def nonLastNotMatchedClauseOmitConditionError(ctx: MergeIntoTableContext): Throwable = { + new ParseException("When there are more than one NOT MATCHED clauses in a MERGE " + + "statement, only the last NOT MATCHED clause can omit the condition.", ctx) + } + + def emptyPartitionKeyError(key: String, ctx: PartitionSpecContext): Throwable = { + new ParseException(s"Found an empty partition key '$key'.", ctx) + } + + def combinationQueryResultClausesUnsupportedError(ctx: QueryOrganizationContext): Throwable = { + new ParseException( + "Combination of ORDER BY/SORT BY/DISTRIBUTE BY/CLUSTER BY is not supported", ctx) + } + + def distributeByUnsupportedError(ctx: QueryOrganizationContext): Throwable = { + new ParseException("DISTRIBUTE BY is not supported", ctx) + } + + def transformWithSerdeUnsupportedError(ctx: ParserRuleContext): Throwable = { + new ParseException("TRANSFORM with serde is only supported in hive mode", ctx) + } + + def lateralWithPivotInFromClauseNotAllowedError(ctx: FromClauseContext): Throwable = { + new ParseException("LATERAL cannot be used together with PIVOT in FROM clause", ctx) + } + + def windowRepetitiveError(name: String, ctx: WindowClauseContext): Throwable = { + new ParseException(s"The definition of window '$name' is repetitive", ctx) + } + + def invalidWindowReferenceError(name: String, ctx: WindowClauseContext): Throwable = { + new ParseException(s"Window reference '$name' is not a window specification", ctx) + } + + def cannotResolveWindowReferenceError(name: String, ctx: WindowClauseContext): Throwable = { + new ParseException(s"Cannot resolve window reference '$name'", ctx) + } + + def joinCriteriaUnimplementedError(join: JoinCriteriaContext, ctx: RelationContext): Throwable = { + new ParseException(s"Unimplemented joinCriteria: $join", ctx) + } + + def naturalCrossJoinUnsupportedError(ctx: RelationContext): Throwable = { + new ParseException("NATURAL CROSS JOIN is not supported", ctx) + } + + def emptyInputForTableSampleError(ctx: ParserRuleContext): Throwable = { + new ParseException("TABLESAMPLE does not accept empty inputs.", ctx) + } + + val byteLengthLiteralMsg = "byteLengthLiteral" + + val bucketOutOfColumnMsg = "BUCKET x OUT OF y ON colname" + + val bucketOutOfFunctionMsg = "BUCKET x OUT OF y ON function" + + def tableSampleByBytesUnsupportedError(msg: String, ctx: SampleMethodContext): Throwable = { + new ParseException(s"TABLESAMPLE($msg) is not supported", ctx) + } Review comment: OK ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
