object ParameterHandler
Handler for parameter substitution across different Spark SQL contexts.
This object consolidates the common parameter handling logic used by SparkSqlParser, SparkConnectPlanner, and ExecuteImmediate. It provides a single, consistent API for all parameter substitution operations in Spark SQL.
Key features: - Automatic parameter type detection (named vs positional) - Uses CompoundOrSingleStatement parsing for all SQL constructs - Consistent error handling and validation - Support for complex data types (arrays, maps, nested structures) - Thread-safe operations with position-aware error context
The handler integrates with the parser through callback mechanisms stored in CurrentOrigin to ensure error positions are correctly mapped back to the original SQL text.
Basic usage:
val context = NamedParameterContext(Map("param1" -> Literal(42))) val result = ParameterHandler.substituteParameters("SELECT :param1", context) // result: "SELECT 42"
- See also
SubstituteParamsParser for the underlying parameter substitution logic
- Alphabetic
- By Inheritance
- ParameterHandler
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def substituteNamedParameters(sqlText: String, paramMap: Map[String, Expression]): (String, PositionMapper)
Substitutes parameters using named parameter map.
Substitutes parameters using named parameter map. This is a convenience method that wraps the main substituteParameters method.
- sqlText
The SQL text containing parameter markers
- paramMap
Map of parameter names to expressions
- returns
A tuple of (substituted SQL, position mapper)
- def substituteParameters(sqlText: String, context: ParameterContext): (String, PositionMapper)
Substitutes parameters in SQL text based on the parameter context.
Substitutes parameters in SQL text based on the parameter context. Returns both the substituted SQL and the position mapper for error reporting.
- sqlText
The SQL text containing parameter markers
- context
The parameter context (named or positional)
- returns
A tuple of (substituted SQL, position mapper)
- Exceptions thrown
IllegalArgumentExceptionif context is null
- def substitutePositionalParameters(sqlText: String, paramList: Seq[Expression]): (String, PositionMapper)
Substitutes parameters using positional parameter list.
Substitutes parameters using positional parameter list. This is a convenience method that wraps the main substituteParameters method.
- sqlText
The SQL text containing parameter markers
- paramList
Sequence of parameter expressions
- returns
A tuple of (substituted SQL, position mapper)
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)