av9ash/GitBugs huggingface dataset:
Bug: CACHE TABLE does not support `spark_catalog` in Hive table names
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 03/Jan/21 09:14
Affects Version/s: 3.2.0

The test fails:
{code:scala}
  test("SPARK-XXXXX: cache table in spark_catalog") {
    withNamespace("spark_catalog.ns") {
      sql("CREATE NAMESPACE spark_catalog.ns")
      val t = "spark_catalog.ns.tbl"
      withTable(t) {
        sql(s"CREATE TABLE $t (col int)")
        assert(!spark.catalog.isCached(t))
        sql(s"CACHE TABLE $t")
        assert(spark.catalog.isCached(t))
      }
    }
  }
{code}
with the exception:
{code:java}
[info] - SPARK-XXXXX: cache table in spark_catalog *** FAILED *** (278 milliseconds)
[info]   org.apache.spark.sql.AnalysisException: spark_catalog.ns.tbl is not a valid TableIdentifier as it has more than 2 name parts.
[info]   at org.apache.spark.sql.connector.catalog.CatalogV2Implicits$MultipartIdentifierHelper.asTableIdentifier(CatalogV2Implicits.scala:130)
[info]   at org.apache.spark.sql.hive.test.TestHiveQueryExecution.$anonfun$analyzed$1(TestHive.scala:600)
{code}
Bug: Partitioning on sensitive columns
Status: Open | Priority: Major | Resolution: 
Created: 03/Jan/21 17:44
Affects Version/s: 3.1.0

In Parquet and ORC files, partitioning must not be done on sensitive (encrypted) columns. Initially, throw an exception. Then consider a crypto option (such as SHA hashing) that enables such partitioning. If this is possible - design, discuss and implement.
Bug: readImages test fails due to NoClassDefFoundError for ImageTypeSpecifier
Status: Open | Priority: Major | Resolution: 
Created: 01/Jan/21 02:00
Affects Version/s: 3.0.1

From https://github.com/apache/spark/pull/30984/checks?check_run_id=1630709203 :
```
[info]   org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 21.0 failed 1 times, most recent failure: Lost task 1.0 in stage 21.0 (TID 20) (fv-az212-589.internal.cloudapp.net executor driver): java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageTypeSpecifier
[info]  at com.sun.imageio.plugins.png.PNGImageReader.getImageTypes(PNGImageReader.java:1531)
[info]  at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1318)
```
It seems some dependency is missing.
Bug: Upgrade jackson version to fix CVE-2020-36179 in Spark 2.4
Status: Resolved | Priority: Minor | Resolution: Won't Fix
Created: 15/Jan/21 07:21
Affects Version/s: 2.4.7

 
{code:java}
FasterXML jackson-databind 2.x before 2.9.10.8 mishandles the interaction between serialization gadgets and typing, related to oadd.org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS.{code}
 

[CVE-2020-36179|https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-36179]

Spark 2.4.7 still using Jackson 2.6.7
Bug: Replaces `java.io.FIle.toURL` with `java.io.File.toURI.toURL`
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 18/Jan/21 08:31
Affects Version/s: 3.2.0

`java.io.FIle.toURL` method does not automatically escape characters that are illegal in URLs. It is recommended that new code convert an abstract pathname into a URL by first converting it into a URI, via the `toURI` method, and then converting the URI into a URL via the `URI.toURL` method.
Bug: NPE when driver.podTemplateFile defines no containers
Status: Open | Priority: Minor | Resolution: 
Created: 15/Jan/21 17:49
Affects Version/s: 3.0.1

An empty pod template leads to the following NPE:

{code}
21/01/15 18:44:32 ERROR KubernetesUtils: Encountered exception while attempting to load initial pod spec from file
java.lang.NullPointerException
	at org.apache.spark.deploy.k8s.KubernetesUtils$.selectSparkContainer(KubernetesUtils.scala:108)
	at org.apache.spark.deploy.k8s.KubernetesUtils$.loadPodFromTemplate(KubernetesUtils.scala:88)
	at org.apache.spark.deploy.k8s.submit.KubernetesDriverBuilder.$anonfun$buildFromFeatures$1(KubernetesDriverBuilder.scala:36)
	at scala.Option.map(Option.scala:230)
	at org.apache.spark.deploy.k8s.submit.KubernetesDriverBuilder.buildFromFeatures(KubernetesDriverBuilder.scala:32)
	at org.apache.spark.deploy.k8s.submit.Client.run(KubernetesClientApplication.scala:98)
	at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.$anonfun$run$4(KubernetesClientApplication.scala:221)
	at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.$anonfun$run$4$adapted(KubernetesClientApplication.scala:215)
	at org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2539)
	at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.run(KubernetesClientApplication.scala:215)
	at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.start(KubernetesClientApplication.scala:188)
	at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:928)
	at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
	at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
	at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
	at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1007)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1016)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
{code}

{code:java}
$> cat empty-template.yml
spec:
{code}

{code}
$> ./bin/run-example \
  --master k8s://$K8S_SERVER \
  --deploy-mode cluster \
  --conf spark.kubernetes.driver.podTemplateFile=empty-template.yml \
  --name $POD_NAME \
  --jars local:///opt/spark/examples/jars/spark-examples_2.12-3.0.1.jar \
  --conf spark.kubernetes.container.image=spark:v3.0.1 \
  --conf spark.kubernetes.driver.pod.name=$POD_NAME \
  --conf spark.kubernetes.namespace=spark-demo \
  --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
  --verbose \
   SparkPi 10
{code}

It appears that the implicit requirement is that there's at least one well-defined container of any name (not necessarily {{spark.kubernetes.driver.podTemplateContainerName}}).
Bug: Make spark-sql CLI configurable for the behavior of printing header by SET command
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 13/Jan/21 21:37
Affects Version/s: 3.2.0

Like Hive CLI, spark-sql CLI accepts hive.cli.print.header property and we can change the behavior of printing header.
But spark-sql CLI doesn't allow users to change Hive specific configurations dynamically by SET command.
So, it's better to support the way to change the behavior by SET command.
Bug: Replaces filter and check for emptiness with exists or forall
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 15/Jan/21 02:35
Affects Version/s: 3.2.0

Semantic consistency and code Simpilefications

before:
{code:java}
seq.filter(p).size == 0)
seq.filter(p).length > 0
seq.filterNot(p).isEmpty
seq.filterNot(p).nonEmpty
{code}
after:
{code:java}
!seq.exists(p)
seq.exists(p)
seq.forall(p)
!seq.forall(p)
{code}
Bug: Incorrect url of the only developer Matei in pom.xml
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 19/Jan/21 10:33
Affects Version/s: 3.1.1

{{<url>[http://www.cs.berkeley.edu/~matei]</url>}} in [pom.xml|https://github.com/apache/spark/blob/53fe365edb948d0e05a5ccb62f349cd9fcb4bb5d/pom.xml#L51] gives
{quote}Resource not found
 The server has encountered a problem because the resource was not found.
 Your request was :
 [https://people.eecs.berkeley.edu/~matei]
{quote}
Bug: Parquet 2 CSV conversion wrong quoting 
Status: Open | Priority: Minor | Resolution: 
Created: 08/Jan/21 12:38
Affects Version/s: 2.4.0

Hi Experts,

 I work for GE Corporate. We have a Backup+Restore+extras project with AWS.

 I faced with incompatibility issues when tried to convert back parquet files to CSV.
 Our original sources (GreenPlum first) cannot process those backward converted files because of unproper quoting.

 

We work on several kinds of ERPs and TechDatabses and there are:
 # multiline (CR,CRLF,LF) text fields
 # mixed quoting inside the fields or just one double quote in a text field
 # we have text field where EmptyString and Null values can be placed and has different meaning

Our last option combination is:
 df.write.format("com.databricks.spark.csv").options(header='false',sep ='\013' ,multiLine ='true',escapeQuotes='true',quote = '"',nullValue ='
N', encoding='UTF-8').option("quoteAll", 'false').option("compression","gzip").mode('overwrite').save(s3_csv)

If I do not use escapeQuotes='true' it wont quote those fields where mixed or once occures a double quote.
 If I use this it will escape emptyString double quotes [sep]\"\"[sep] . ==> Our Greenplum reader cannot read (Restoration) this format for emptyString.
 It should be [sep]""[sep] or [sep][sep].

Can you help our project with proper quote and escape combination where data looks like this:

"2607 - CREDIT MEMO - SOCIETATEA NATIONALA 'NUCLEARELECTRICA\" S.A. | 13-APR-20 "

"290208407
|INT. RIEL DIN 2X32A 230/400V "|

""

I found an earlier option what you moved out: quoteMode.Non_Numeric. 



Thank you in advance!

 

Regards,

Laszlo Torok
Bug: Fold RepartitionExpression num partition should at Optimizer
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 06/Jan/21 12:48
Affects Version/s: 3.2.0

We meet some ploblem when backport SPARK-33806. It is because the UnresolvedFunction.foldable will throw a exception. It's ok with master branch, but it's better to do it at Optimizer. Some reason:
 # It's not always safe to call Expression.foldable before analysis.
 # fold num partition to 1 more like a optimize behavior.
Bug: 【UI】JDBC/ODBC server shows -445 session(s) are online
Status: Open | Priority: Minor | Resolution: 
Created: 06/Jan/21 09:48
Affects Version/s: 2.3.2

My spark version is 2.3.2

JDBC/ODBC server UI shows -445 sessions online which could be abnormal.

As following description.
h5.  

 
{code:java}
-445 session(s) are online, running 2 SQL statement(s)
Session Statistics (229)
{code}
Bug: Cleanup "unreachable code" compilation warnings
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 06/Jan/21 11:10
Affects Version/s: 3.2.0

Run 
{code:java}
mvn clean install -DskipTests -Phadoop-3.2 -Phive-2.3 -Phadoop-cloud -Pmesos -Pyarn -Pkinesis-asl -Phive-thriftserver -Pspark-ganglia-lgpl -Pkubernetes -Phive -Pscala-2.13
{code}
There is one "unreachable code" compilation warning:
{code:java}
[WARNING] [Warn] /spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/catalog/SessionCatalog.scala:1555: [other-match-analysis @ org.apache.spark.sql.catalyst.catalog.SessionCatalog.lookupFunction.catalogFunction] unreachable code
{code}
Bug: Activate profile 'aarch64' based on OS
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 05/Jan/21 08:32
Affects Version/s: 3.0.2

Now we activate profile 'aarch64' by parameter '-Paarch' to build spark on aarch64: https://github.com/apache/spark/blob/master/pom.xml#L3369-L3374

There is another way to activate maven profile based on OS settings automatically, like:
    <profile>
      <id>aarch64</id>
      <properties>
        <leveldbjni.group>org.openlabtesting.leveldbjni</leveldbjni.group>
      </properties>
      <activation>
        <os>
          <family>linux</family>
          <arch>aarch64</arch>
        </os>
      </activation>
    </profile>
Bug: Fix deprecated API usage of commons-io
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 29/Jan/21 03:28
Affects Version/s: 3.2.0

{code:java}
[WARNING] [Warn] /spark/core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala:1109: [deprecation @ org.apache.spark.deploy.SparkSubmitSuite.checkDownloadedFile.$org_scalatest_assert_macro_expr.$org_scalatest_assert_macro_left | origin=org.apache.commons.io.FileUtils.readFileToString | version=] method readFileToString in class FileUtils is deprecated
[WARNING] [Warn] /spark/core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala:1110: [deprecation @ org.apache.spark.deploy.SparkSubmitSuite.checkDownloadedFile.$org_scalatest_assert_macro_expr.$org_scalatest_assert_macro_right | origin=org.apache.commons.io.FileUtils.readFileToString | version=] method readFileToString in class FileUtils is deprecated
[WARNING] [Warn] /spark/core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala:1152: [deprecation @ org.apache.spark.deploy.SparkSubmitSuite | origin=org.apache.commons.io.FileUtils.write | version=] method write in class FileUtils is deprecated
[WARNING] [Warn] /spark/core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala:1167: [deprecation @ org.apache.spark.deploy.SparkSubmitSuite | origin=org.apache.commons.io.FileUtils.write | version=] method write in class FileUtils is deprecated
[WARNING] [Warn] /spark/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerSuite.scala:201: [deprecation @ org.apache.spark.deploy.history.HistoryServerSuite.<local HistoryServerSuite>.$anonfun.exp | origin=org.apache.commons.io.IOUtils.toString | version=] method toString in class IOUtils is deprecated
[WARNING] [Warn] /spark/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerSuite.scala:716: [deprecation @ org.apache.spark.deploy.history.HistoryServerSuite.getContentAndCode.inString.$anonfun | origin=org.apache.commons.io.IOUtils.toString | version=] method toString in class IOUtils is deprecated
[WARNING] [Warn] /spark/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerSuite.scala:732: [deprecation @ org.apache.spark.deploy.history.HistoryServerSuite.connectAndGetInputStream.errString.$anonfun | origin=org.apache.commons.io.IOUtils.toString | version=] method toString in class IOUtils is deprecated
[WARNING] [Warn] /spark/streaming/src/test/scala/org/apache/spark/streaming/InputStreamsSuite.scala:267: [deprecation @ org.apache.spark.streaming.InputStreamsSuite.<local InputStreamsSuite>.$anonfun.$anonfun.write | origin=org.apache.commons.io.IOUtils.write | version=] method write in class IOUtils is deprecated
[WARNING] [Warn] /spark/streaming/src/test/scala/org/apache/spark/streaming/StreamingContextSuite.scala:912: [deprecation @ org.apache.spark.streaming.StreamingContextSuite.createCorruptedCheckpoint | origin=org.apache.commons.io.FileUtils.write | version=] method write in class FileUtils is deprecated
{code}
Bug: Replaces filter and size with count
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 28/Jan/21 04:29
Affects Version/s: 3.2.0

Use {{count}} to simplify {{find + size(or length) operation}}, it's semantically consistent, but looks simpler.

*Before*
{code:java}
seq.filter(p).size{code}
*After*
{code:java}
seq.count(p){code}
Bug: Use majorMinorPatchVersion for Hive version parsing
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 28/Jan/21 01:57
Affects Version/s: 3.2.0

Currently {{IsolatedClientLoader}} need to enumerate all Hive patch versions. Therefore, whenever we upgrade Hive version we'd have to remember to update the method. It would be better if we just check major & minor version.
Bug: typeName of CalendarIntervalType changed from spark 2 to 3
Status: Open | Priority: Minor | Resolution: 
Created: 24/Jan/21 18:47
Affects Version/s: 3.0.0

Between the version of spark 2.X and 3.X you have changed how {{typeName}} is generated for {{CalendarIntervalType}}. It is now a constant that does not equal the old value. Also, for others, it seems you have kept the old way. Why is that?

Did you mean to make it {{simpleName}} instead of {{typeName}}?

Whatever the result, it is missing in changelogs.
Bug: DESC command returns wrong data type
Status: Resolved | Priority: Minor | Resolution: Duplicate
Created: 20/Jan/21 09:08
Affects Version/s: 2.3.2

The data type of col_02 is assigned as varchar(256), but desc returns wrong type string.

create table test_data_type(col_01 bigint, col_02 *{color:#de350b}varchar(256){color}*);

desc test_data_type;

| col_01 | bigint | NULL |
| col_02 | *{color:#de350b}string{color}* | NULL |
Bug: Instrument Python UDF execution using SQL Metrics
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 27/Jan/21 13:56
Affects Version/s: 3.3.0

This proposes to add SQLMetrics instrumentation for Python UDF. 
This is aimed at improving monitoring and performance troubleshooting of Python UDFs, Pandas UDF, including also the use of MapPartittion, and MapInArrow.
The introduced metrics are exposed to the end users via the metrics system and are visible through the WebUI interface, in the SQL/DataFrame tab for execution steps related to Python UDF execution. See also the attached screenshots.

This intrumentation is lightweight and can be used in production and for monitoring. It is complementary to the Python/Pandas UDF Profiler introduced in Spark 3.3 [https://spark.apache.org/docs/latest/api/python/development/debugging.html#python-pandas-udf]
Bug: Update Roxygen version references to 7.1.1
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 15/Jan/21 19:01
Affects Version/s: 3.1.1

At the moment R docs and {{DESCRIPTION}} file reference roxygen 5.0.1, but all servers run 7.1.1 (SPARK-30747) and GitHub actions install latest package version (7.1.1 at the moment).

Docs and {{DESCRIPTION}} file should be updated to reflect that.
Bug: Spark 3.0.1 is giving WARN while running job
Status: Open | Priority: Minor | Resolution: 
Created: 13/Jan/21 05:52
Affects Version/s: 3.0.1

I am running Spark 3.0.1 with Java11. Getting the following WARN.

 

WARNING: An illegal reflective access operation has occurred
 WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform ([file:/opt/spark/jars/spark-unsafe_2.12-3.0.1.jar|file://opt/spark/jars/spark-unsafe_2.12-3.0.1.jar]) to constructor java.nio.DirectByteBuffer(long,int)
 WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
 WARNING: All illegal access operations will be denied in a future release
Bug: Broadcast job is not aborted even the SQL statement canceled
Status: In Progress | Priority: Minor | Resolution: 
Created: 11/Jan/21 05:37
Affects Version/s: 3.0.1

SPARK-27036 introduced a runId for BroadcastExchangeExec to resolve the problem that a broadcast job is not aborted when broadcast timeout happens. Since the runId is a random UUID, when a SQL statement is cancelled, these broadcast sub-jobs still not canceled as a whole.

 !Screen Shot 2021-01-11 at 12.03.13 PM.png|width=100%!
Bug: Support 32-bit unicode escape in string literals
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 08/Jan/21 16:54
Affects Version/s: 3.2.0

Currently, Spark supports 16-bit unicode escape like "\u0041" in string literals.

I think It's nice if 32-bit unicode is also supported like PostgreSQL and modern programming languages do (e.g, C++11, Rust).
Bug: Make datetime addition easier for years, weeks, hours, minutes, and seconds
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 04/Jan/21 19:03
Affects Version/s: 3.2.0

There are add_months and date_add functions that make it easy to perform datetime addition with months and days, but there isn't an easy way to perform datetime addition with years, weeks, hours, minutes, or seconds with the Scala/Python/R APIs.

Users need to write code like expr("first_datetime + INTERVAL 2 hours") to add two hours to a timestamp with the Scala API, which isn't desirable.  We don't want to make Scala users manipulate SQL strings.

We can expose the [make_interval SQL function|https://github.com/apache/spark/pull/26446/files] to make any combination of datetime addition possible.  That'll make tons of different datetime addition operations possible and will be valuable for a wide array of users.

make_interval takes 7 arguments: years, months, weeks, days, hours, mins, and secs.

There are different ways to expose the make_interval functionality to Scala/Python/R users:
 * Option 1: Single make_interval function that takes 7 arguments
 * Option 2: expose a few interval functions
 ** make_date_interval function that takes years, months, days
 ** make_time_interval function that takes hours, minutes, seconds
 ** make_datetime_interval function that takes years, months, days, hours, minutes, seconds
 * Option 3: expose add_years, add_months, add_days, add_weeks, add_hours, add_minutes, and add_seconds as Column methods.  
 * Option 4: Expose the add_years, add_hours, etc. as column functions.  add_weeks and date_add have already been exposed in this manner.  

Option 1 is nice from a maintenance perspective cause it's a single function, but it's not standard from a user perspective.  Most languages support datetime instantiation with these arguments: years, months, days, hours, minutes, seconds.  Mixing weeks into the equation is not standard.

As a user, Option 3 would be my preference.  col("first_datetime").addHours(2).addSeconds(30) is easy for me to remember and type.  col("first_datetime") + make_time_interval(lit(2), lit(0), lit(30)) isn't as nice.  col("first_datetime") + make_interval(lit(0), lit(0), lit(0), lit(0), lit(2), lit(0), lit(30)) is harder still.

Any of these options is an improvement to the status quo.  Let me know what option you think is best and then I'll make a PR to implement it, building off of Max's foundational work of course ;)
Bug: Reduce RepartitionOperation num partitions to its child max row
Status: Resolved | Priority: Minor | Resolution: Won't Fix
Created: 25/Jan/21 13:51
Affects Version/s: 3.2.0

It's no meaning to repartition data if partition number is larger than data row, but would waste the resouce due to redundant task.

With ETL case, we always inject `repartition` or `distribute by` to reduce the output partition but the partition number may bigger than data row. It's better that try our best to reduce the redundant partition.
Bug: support filtering by task status in REST API call for a specific stage
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 13/Jan/21 02:53
Affects Version/s: 3.2.0

When we want to get a specific stage's detail info with task information, it will return all tasks.  The content is huge for a stage with thousands of tasks.  And we often just want to know some failed tasks/running tasks with whole stage info to judge whether or not a task has some problem.  Query parameter taskStatus can be used to filter the tasks meeting a specific status in the REST API call for a given stage.   We want to support the following REST API calls: 

applications/<application_id>/<application_attempt>/stages/<stage_id>?details=true&taskStatus=[RUNNING|SUCCESS|FAILED|KILLED|PENDING]

applications/<application_id>/<application_attempt>/stages/<stage_id>/<stage_attempt>?details=true&taskStatus=[RUNNING|SUCCESS|FAILED|KILLED|PENDING]

Need to set details=true in order to drill down to the task level within a specified stage.
Bug:  Suppress excessive logging of TTransportExceptions in Spark ThriftServer
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 15/Jan/21 12:46
Affects Version/s: 3.0.1

Since Spark 3.0， the `libthrift` has been bumped up from 0.9.3 to 0.12.0.

Due to THRIFT-4805, The SparkThrift Server will print annoying TExceptions. For example, the current thrift server module test in Github action workflow outputs more than 200MB of data for this error only, while the total size of the test log only about 1GB.

 

I checked the latest `hive-service-rpc` module in the maven center,  [https://mvnrepository.com/artifact/org.apache.hive/hive-service-rpc/3.1.2.]  It still uses the 0.9.3 version. 

 

Due to THRIFT-5274 , It looks like we need to wait for thrift 0.14.0 to release or downgrade to 0.9.3 to fix this issue if any of them is appropriate
Bug: Enhance Boolean Simplification Rule
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 25/Jan/21 10:03
Affects Version/s: 3.0.1

Enhance boolean simplification rule by handling following scenarios:
 # (((a && b) && a && (a && c))) => a && b && c)
 # (((a || b) || a || (a || c))) => a || b || c