Github user kunalkhamar commented on a diff in the pull request:

    https://github.com/apache/spark/pull/17433#discussion_r108275733
  
    --- Diff: 
sql/core/src/main/scala/org/apache/spark/sql/internal/SessionState.scala ---
    @@ -179,88 +132,295 @@ private[sql] class SessionState(
       }
     }
     
    -
     private[sql] object SessionState {
    +  /**
    +   * Create a new [[SessionState]] for the given session.
    +   */
    +  def apply(session: SparkSession): SessionState = {
    +    new SessionStateBuilder(session).build
    +  }
    +
    +  def newHadoopConf(hadoopConf: Configuration, sqlConf: SQLConf): 
Configuration = {
    +    val newHadoopConf = new Configuration(hadoopConf)
    +    sqlConf.getAllConfs.foreach { case (k, v) => if (v ne null) 
newHadoopConf.set(k, v) }
    +    newHadoopConf
    +  }
    +}
    +
    +/**
    + * Builder class that coordinates construction of a new [[SessionState]].
    + *
    + * The builder explicitly defines all components needed by the session 
state, and creates a session
    + * state when `build` is called. Components should only be initialized 
once. This is not a problem
    + * for most components as they are only used in the `build` function. 
However some components
    + * (`conf`, `catalog`, `functionRegistry`, `experimentalMethods` & 
`sqlParser`) are as dependencies
    + * for other components and are shared as a result. These components are 
defined as lazy vals to
    + * make sure the component is created only once.
    + *
    + * A developer can modify the builder by providing custom versions of 
components, or by using the
    + * hooks provided for the analyzer, optimizer & planner. There are some 
dependencies between the
    + * components (they are documented per dependency), a developer should 
respect these when making
    + * modifications in order to prevent initialization problems.
    + *
    + * A parent [[SessionState]] can be used to initialize the new 
[[SessionState]]. The new session
    + * state will clone the parent sessions state's `conf`, 
`functionRegistry`, `experimentalMethods`
    + * and `catalog` fields. Note that the state is cloned when `build` is 
called, and not before.
    + */
    +@Experimental
    +@InterfaceStability.Unstable
    +abstract class BaseSessionStateBuilder(
    --- End diff --
    
    That may be a good idea.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to