spark-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shixiong Zhu (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (SPARK-4812) SparkPlan.codegenEnabled may be initialized to a wrong value
Date Mon, 15 Dec 2014 06:48:13 GMT

     [ https://issues.apache.org/jira/browse/SPARK-4812?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Shixiong Zhu updated SPARK-4812:
--------------------------------
    Description: 
The problem is `codegenEnabled` is `val`, but it uses a `val` `sqlContext`, which can be override
by subclasses. Here is a simple example to show this issue.

{code}
scala> :paste
// Entering paste mode (ctrl-D to finish)

abstract class Foo {

  protected val sqlContext = "Foo"

  val codegenEnabled: Boolean = {
    println(sqlContext) // it will call subclass's `sqlContext` which has not yet been initialized.
    if (sqlContext != null) {
      true
    } else {
      false
    }
  }
}

class Bar extends Foo {
  override val sqlContext = "Bar"
}

println(new Bar().codegenEnabled)

// Exiting paste mode, now interpreting.

null
false
defined class Foo
defined class Bar

scala> 
{code}

We should make `sqlContext` `final` to prevent subclasses from overriding it incorrectly.

  was:
The problem is `codegenEnabled` is `val`, but it uses a `val` `sqlContext`, which can be override
by subclasses. Here is a simple example to show this issue.

{code}
scala> :paste
// Entering paste mode (ctrl-D to finish)

abstract class Foo {

  protected val sqlContext = "Foo"

  val codegenEnabled: Boolean = {
    println(sqlContext) // it will call subclass's `sqlContext` which has not yet been initialized.
    if (sqlContext != null) {
      true
    } else {
      false
    }
  }
}

class Bar extends Foo {
  override val sqlContext = "Bar"
}

println(new Bar().codegenEnabled)

// Exiting paste mode, now interpreting.

null
false
defined class Foo
defined class Bar

scala> 
{code}

To fix it, should override codegenEnabled in `InMemoryColumnarTableScan`.


> SparkPlan.codegenEnabled may be initialized to a wrong value
> ------------------------------------------------------------
>
>                 Key: SPARK-4812
>                 URL: https://issues.apache.org/jira/browse/SPARK-4812
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>            Reporter: Shixiong Zhu
>            Assignee: Shixiong Zhu
>
> The problem is `codegenEnabled` is `val`, but it uses a `val` `sqlContext`, which can
be override by subclasses. Here is a simple example to show this issue.
> {code}
> scala> :paste
> // Entering paste mode (ctrl-D to finish)
> abstract class Foo {
>   protected val sqlContext = "Foo"
>   val codegenEnabled: Boolean = {
>     println(sqlContext) // it will call subclass's `sqlContext` which has not yet been
initialized.
>     if (sqlContext != null) {
>       true
>     } else {
>       false
>     }
>   }
> }
> class Bar extends Foo {
>   override val sqlContext = "Bar"
> }
> println(new Bar().codegenEnabled)
> // Exiting paste mode, now interpreting.
> null
> false
> defined class Foo
> defined class Bar
> scala> 
> {code}
> We should make `sqlContext` `final` to prevent subclasses from overriding it incorrectly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org


Mime
View raw message