aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorDaoyuan Wang <daoyuan.wang@intel.com>2014-11-14 13:51:20 -0800
committerMichael Armbrust <michael@databricks.com>2014-11-14 13:51:20 -0800
commitade72c436276237f305d6a6aa4b594d43bcc4743 (patch)
treec052822ee7ab25772e2fbbd751515971bea3db9f /sql
parentc258db9ed4104b6eefe9f55f3e3959a3c46c2900 (diff)
downloadspark-ade72c436276237f305d6a6aa4b594d43bcc4743.tar.gz
spark-ade72c436276237f305d6a6aa4b594d43bcc4743.tar.bz2
spark-ade72c436276237f305d6a6aa4b594d43bcc4743.zip
[SPARK-4239] [SQL] support view in HiveQl
Currently still not support view like CREATE VIEW view3(valoo) TBLPROPERTIES ("fear" = "factor") AS SELECT upper(value) FROM src WHERE key=86; because the text in metastore for this view is like select \`_c0\` as \`valoo\` from (select upper(\`src\`.\`value\`) from \`default\`.\`src\` where ...) \`view3\` while catalyst cannot resolve \`_c0\` for this query. For view without colname definition in parentheses, it works fine. Author: Daoyuan Wang <daoyuan.wang@intel.com> Closes #3131 from adrian-wang/view and squashes the following commits: 8a56fd6 [Daoyuan Wang] michael's comments e46c056 [Daoyuan Wang] add some golden file 079290a [Daoyuan Wang] remove useless import 88afcad [Daoyuan Wang] support view in HiveQl
Diffstat (limited to 'sql')
-rw-r--r--sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala6
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala34
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala10
-rw-r--r--sql/hive/src/test/resources/golden/view-0-5528e36b3b0f5b14313898cc45f9c23a0
-rw-r--r--sql/hive/src/test/resources/golden/view-1-7650b86c86dd6b1a99c86ddc5a31bd630
-rw-r--r--sql/hive/src/test/resources/golden/view-10-7aae4448a05e8a8a3bace7522e952cd00
-rw-r--r--sql/hive/src/test/resources/golden/view-11-dc95343d3e57846485dd5434763913760
-rw-r--r--sql/hive/src/test/resources/golden/view-12-371764e1cae31ea0518c03060528d2390
-rw-r--r--sql/hive/src/test/resources/golden/view-13-2abce88008f8a19164758ee821aaa8a60
-rw-r--r--sql/hive/src/test/resources/golden/view-14-deb504f4f70fd7db975950c3c47959ee0
-rw-r--r--sql/hive/src/test/resources/golden/view-15-6f2797b6f81943d3b53b8d247ae8512b0
-rw-r--r--sql/hive/src/test/resources/golden/view-16-3077fd708f97a03d4151a1a30e4308d8500
-rw-r--r--sql/hive/src/test/resources/golden/view-17-544b822e12afa24d2c64d6149e19c12c500
-rw-r--r--sql/hive/src/test/resources/golden/view-18-cd6a123a71769b082000669292e57add1028
-rw-r--r--sql/hive/src/test/resources/golden/view-19-4a8f62f10a8a7b1f6e0d1c15481590a6500
-rw-r--r--sql/hive/src/test/resources/golden/view-2-9c529f486fa81a032bfe1253808fca80
-rw-r--r--sql/hive/src/test/resources/golden/view-20-92aa822cb9dc29a1d3ad37d3ebaa344a500
-rw-r--r--sql/hive/src/test/resources/golden/view-21-4fa118ed540dfe42748bbed1e7fb513d1028
-rw-r--r--sql/hive/src/test/resources/golden/view-22-f83b15c828d4ec599d7827af8b25f578500
-rw-r--r--sql/hive/src/test/resources/golden/view-23-f6a52dd2ff5b11ea3bba2feb867f00c2500
-rw-r--r--sql/hive/src/test/resources/golden/view-3-e7dd3b24daa60d8955b22f0441f01a6a0
-rw-r--r--sql/hive/src/test/resources/golden/view-4-4a64d1a623ca71e515796787dbd0f9040
-rw-r--r--sql/hive/src/test/resources/golden/view-5-7abee38ed087f13f03ac216ef0decf4c0
-rw-r--r--sql/hive/src/test/resources/golden/view-6-47b5043f03a84695b6784682b4402ac80
-rw-r--r--sql/hive/src/test/resources/golden/view-7-8b1bbdadfd1e11af1b56064196164e580
-rw-r--r--sql/hive/src/test/resources/golden/view-8-60d2f3ee552ae7021f9fa72f0dcf28670
-rw-r--r--sql/hive/src/test/resources/golden/view-9-66c68babac10ae0f645fe8334c5a42d40
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-0-89bd46ad04f967f1f5ee17c6f201aacf0
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-1-85685a26971fb51ab6e28f9c5e8421bb0
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-10-a7c865e5180df8d73dba90ede8be0d450
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-11-b809f5d793b072146ccf577abf2860038
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-2-635031c0752d5b30c44dfb3dec759a6c0
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-3-9f675e7edd64a33713e91282dc2018670
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-4-d9edb83f4cf847e141d97012314917d40
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-5-6db508ccd85562a9ca7841fb0a08981a0
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-6-b18da53e46b62d6d91efac88ba62f3080
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-7-78ac3800b22682b31708b6a09b402bfb0
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-8-2cc0c576f0a008abf5bdf3308d5008690
-rw-r--r--sql/hive/src/test/resources/golden/view_cast-9-f306bf3ad1c2a99f6f1843db44d7dfb40
-rw-r--r--sql/hive/src/test/resources/golden/view_inputs-0-9e67dfd1d595ab8b1935b789645f76c00
-rw-r--r--sql/hive/src/test/resources/golden/view_inputs-1-5af97e73bc3841793440105aae766bbe0
-rw-r--r--sql/hive/src/test/resources/golden/view_inputs-2-626fa3664754125edc44b7ca7f8630db1
42 files changed, 5098 insertions, 17 deletions
diff --git a/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala b/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala
index 1a3c24be42..7c0be4872d 100644
--- a/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala
+++ b/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala
@@ -103,6 +103,7 @@ class HiveCompatibilitySuite extends HiveQueryFileTest with BeforeAndAfter {
"udf5",
"udf_java_method",
"create_merge_compressed",
+ "create_view_partitioned",
"database_location",
"database_properties",
@@ -969,6 +970,9 @@ class HiveCompatibilitySuite extends HiveQueryFileTest with BeforeAndAfter {
"union_script",
"varchar_2",
"varchar_join1",
- "varchar_union1"
+ "varchar_union1",
+ "view",
+ "view_cast",
+ "view_inputs"
)
}
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala
index 9ae0198422..d446650422 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala
@@ -20,17 +20,15 @@ package org.apache.spark.sql.hive
import java.io.IOException
import java.util.{List => JList}
-import scala.util.matching.Regex
import scala.util.parsing.combinator.RegexParsers
import org.apache.hadoop.util.ReflectionUtils
-import org.apache.hadoop.fs.Path
import org.apache.hadoop.hive.metastore.TableType
import org.apache.hadoop.hive.metastore.api.FieldSchema
import org.apache.hadoop.hive.metastore.api.{Table => TTable, Partition => TPartition}
import org.apache.hadoop.hive.ql.metadata.{Hive, Partition, Table, HiveException}
-import org.apache.hadoop.hive.ql.plan.{TableDesc, CreateTableDesc}
+import org.apache.hadoop.hive.ql.plan.CreateTableDesc
import org.apache.hadoop.hive.serde.serdeConstants
import org.apache.hadoop.hive.serde2.{Deserializer, SerDeException}
import org.apache.hadoop.hive.serde2.`lazy`.LazySimpleSerDe
@@ -67,20 +65,26 @@ private[hive] class HiveMetastoreCatalog(hive: HiveContext) extends Catalog with
db: Option[String],
tableName: String,
alias: Option[String]): LogicalPlan = synchronized {
- val (databaseName, tblName) = processDatabaseAndTableName(
- db.getOrElse(hive.sessionState.getCurrentDatabase), tableName)
+ val (databaseName, tblName) =
+ processDatabaseAndTableName(db.getOrElse(hive.sessionState.getCurrentDatabase), tableName)
val table = client.getTable(databaseName, tblName)
- val partitions: Seq[Partition] =
- if (table.isPartitioned) {
- HiveShim.getAllPartitionsOf(client, table).toSeq
- } else {
- Nil
- }
+ if (table.isView) {
+ // if the unresolved relation is from hive view
+ // parse the text into logic node.
+ HiveQl.createPlanForView(table, alias)
+ } else {
+ val partitions: Seq[Partition] =
+ if (table.isPartitioned) {
+ HiveShim.getAllPartitionsOf(client, table).toSeq
+ } else {
+ Nil
+ }
- // Since HiveQL is case insensitive for table names we make them all lowercase.
- MetastoreRelation(
- databaseName, tblName, alias)(
- table.getTTable, partitions.map(part => part.getTPartition))(hive)
+ // Since HiveQL is case insensitive for table names we make them all lowercase.
+ MetastoreRelation(
+ databaseName, tblName, alias)(
+ table.getTTable, partitions.map(part => part.getTPartition))(hive)
+ }
}
/**
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala
index 74f68d0f95..1ca0403d6f 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala
@@ -21,6 +21,7 @@ import java.sql.Date
import org.apache.hadoop.hive.conf.HiveConf
import org.apache.hadoop.hive.ql.Context
import org.apache.hadoop.hive.ql.lib.Node
+import org.apache.hadoop.hive.ql.metadata.Table
import org.apache.hadoop.hive.ql.parse._
import org.apache.hadoop.hive.ql.plan.PlanUtils
@@ -106,7 +107,6 @@ private[hive] object HiveQl {
"TOK_DROPINDEX",
"TOK_MSCK",
- // TODO(marmbrus): Figure out how view are expanded by hive, as we might need to handle this.
"TOK_ALTERVIEW_ADDPARTS",
"TOK_ALTERVIEW_AS",
"TOK_ALTERVIEW_DROPPARTS",
@@ -259,6 +259,14 @@ private[hive] object HiveQl {
}
}
+ /** Creates LogicalPlan for a given VIEW */
+ def createPlanForView(view: Table, alias: Option[String]) = alias match {
+ // because hive use things like `_c0` to build the expanded text
+ // currently we cannot support view from "create view v1(c1) as ..."
+ case None => Subquery(view.getTableName, createPlan(view.getViewExpandedText))
+ case Some(aliasText) => Subquery(aliasText, createPlan(view.getViewExpandedText))
+ }
+
def parseDdl(ddl: String): Seq[Attribute] = {
val tree =
try {
diff --git a/sql/hive/src/test/resources/golden/view-0-5528e36b3b0f5b14313898cc45f9c23a b/sql/hive/src/test/resources/golden/view-0-5528e36b3b0f5b14313898cc45f9c23a
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-0-5528e36b3b0f5b14313898cc45f9c23a
diff --git a/sql/hive/src/test/resources/golden/view-1-7650b86c86dd6b1a99c86ddc5a31bd63 b/sql/hive/src/test/resources/golden/view-1-7650b86c86dd6b1a99c86ddc5a31bd63
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-1-7650b86c86dd6b1a99c86ddc5a31bd63
diff --git a/sql/hive/src/test/resources/golden/view-10-7aae4448a05e8a8a3bace7522e952cd0 b/sql/hive/src/test/resources/golden/view-10-7aae4448a05e8a8a3bace7522e952cd0
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-10-7aae4448a05e8a8a3bace7522e952cd0
diff --git a/sql/hive/src/test/resources/golden/view-11-dc95343d3e57846485dd543476391376 b/sql/hive/src/test/resources/golden/view-11-dc95343d3e57846485dd543476391376
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-11-dc95343d3e57846485dd543476391376
diff --git a/sql/hive/src/test/resources/golden/view-12-371764e1cae31ea0518c03060528d239 b/sql/hive/src/test/resources/golden/view-12-371764e1cae31ea0518c03060528d239
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-12-371764e1cae31ea0518c03060528d239
diff --git a/sql/hive/src/test/resources/golden/view-13-2abce88008f8a19164758ee821aaa8a6 b/sql/hive/src/test/resources/golden/view-13-2abce88008f8a19164758ee821aaa8a6
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-13-2abce88008f8a19164758ee821aaa8a6
diff --git a/sql/hive/src/test/resources/golden/view-14-deb504f4f70fd7db975950c3c47959ee b/sql/hive/src/test/resources/golden/view-14-deb504f4f70fd7db975950c3c47959ee
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-14-deb504f4f70fd7db975950c3c47959ee
diff --git a/sql/hive/src/test/resources/golden/view-15-6f2797b6f81943d3b53b8d247ae8512b b/sql/hive/src/test/resources/golden/view-15-6f2797b6f81943d3b53b8d247ae8512b
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-15-6f2797b6f81943d3b53b8d247ae8512b
diff --git a/sql/hive/src/test/resources/golden/view-16-3077fd708f97a03d4151a1a30e4308d8 b/sql/hive/src/test/resources/golden/view-16-3077fd708f97a03d4151a1a30e4308d8
new file mode 100644
index 0000000000..7aae61e5eb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-16-3077fd708f97a03d4151a1a30e4308d8
@@ -0,0 +1,500 @@
+238 val_238
+86 val_86
+311 val_311
+27 val_27
+165 val_165
+409 val_409
+255 val_255
+278 val_278
+98 val_98
+484 val_484
+265 val_265
+193 val_193
+401 val_401
+150 val_150
+273 val_273
+224 val_224
+369 val_369
+66 val_66
+128 val_128
+213 val_213
+146 val_146
+406 val_406
+429 val_429
+374 val_374
+152 val_152
+469 val_469
+145 val_145
+495 val_495
+37 val_37
+327 val_327
+281 val_281
+277 val_277
+209 val_209
+15 val_15
+82 val_82
+403 val_403
+166 val_166
+417 val_417
+430 val_430
+252 val_252
+292 val_292
+219 val_219
+287 val_287
+153 val_153
+193 val_193
+338 val_338
+446 val_446
+459 val_459
+394 val_394
+237 val_237
+482 val_482
+174 val_174
+413 val_413
+494 val_494
+207 val_207
+199 val_199
+466 val_466
+208 val_208
+174 val_174
+399 val_399
+396 val_396
+247 val_247
+417 val_417
+489 val_489
+162 val_162
+377 val_377
+397 val_397
+309 val_309
+365 val_365
+266 val_266
+439 val_439
+342 val_342
+367 val_367
+325 val_325
+167 val_167
+195 val_195
+475 val_475
+17 val_17
+113 val_113
+155 val_155
+203 val_203
+339 val_339
+0 val_0
+455 val_455
+128 val_128
+311 val_311
+316 val_316
+57 val_57
+302 val_302
+205 val_205
+149 val_149
+438 val_438
+345 val_345
+129 val_129
+170 val_170
+20 val_20
+489 val_489
+157 val_157
+378 val_378
+221 val_221
+92 val_92
+111 val_111
+47 val_47
+72 val_72
+4 val_4
+280 val_280
+35 val_35
+427 val_427
+277 val_277
+208 val_208
+356 val_356
+399 val_399
+169 val_169
+382 val_382
+498 val_498
+125 val_125
+386 val_386
+437 val_437
+469 val_469
+192 val_192
+286 val_286
+187 val_187
+176 val_176
+54 val_54
+459 val_459
+51 val_51
+138 val_138
+103 val_103
+239 val_239
+213 val_213
+216 val_216
+430 val_430
+278 val_278
+176 val_176
+289 val_289
+221 val_221
+65 val_65
+318 val_318
+332 val_332
+311 val_311
+275 val_275
+137 val_137
+241 val_241
+83 val_83
+333 val_333
+180 val_180
+284 val_284
+12 val_12
+230 val_230
+181 val_181
+67 val_67
+260 val_260
+404 val_404
+384 val_384
+489 val_489
+353 val_353
+373 val_373
+272 val_272
+138 val_138
+217 val_217
+84 val_84
+348 val_348
+466 val_466
+58 val_58
+8 val_8
+411 val_411
+230 val_230
+208 val_208
+348 val_348
+24 val_24
+463 val_463
+431 val_431
+179 val_179
+172 val_172
+42 val_42
+129 val_129
+158 val_158
+119 val_119
+496 val_496
+0 val_0
+322 val_322
+197 val_197
+468 val_468
+393 val_393
+454 val_454
+100 val_100
+298 val_298
+199 val_199
+191 val_191
+418 val_418
+96 val_96
+26 val_26
+165 val_165
+327 val_327
+230 val_230
+205 val_205
+120 val_120
+131 val_131
+51 val_51
+404 val_404
+43 val_43
+436 val_436
+156 val_156
+469 val_469
+468 val_468
+308 val_308
+95 val_95
+196 val_196
+288 val_288
+481 val_481
+457 val_457
+98 val_98
+282 val_282
+197 val_197
+187 val_187
+318 val_318
+318 val_318
+409 val_409
+470 val_470
+137 val_137
+369 val_369
+316 val_316
+169 val_169
+413 val_413
+85 val_85
+77 val_77
+0 val_0
+490 val_490
+87 val_87
+364 val_364
+179 val_179
+118 val_118
+134 val_134
+395 val_395
+282 val_282
+138 val_138
+238 val_238
+419 val_419
+15 val_15
+118 val_118
+72 val_72
+90 val_90
+307 val_307
+19 val_19
+435 val_435
+10 val_10
+277 val_277
+273 val_273
+306 val_306
+224 val_224
+309 val_309
+389 val_389
+327 val_327
+242 val_242
+369 val_369
+392 val_392
+272 val_272
+331 val_331
+401 val_401
+242 val_242
+452 val_452
+177 val_177
+226 val_226
+5 val_5
+497 val_497
+402 val_402
+396 val_396
+317 val_317
+395 val_395
+58 val_58
+35 val_35
+336 val_336
+95 val_95
+11 val_11
+168 val_168
+34 val_34
+229 val_229
+233 val_233
+143 val_143
+472 val_472
+322 val_322
+498 val_498
+160 val_160
+195 val_195
+42 val_42
+321 val_321
+430 val_430
+119 val_119
+489 val_489
+458 val_458
+78 val_78
+76 val_76
+41 val_41
+223 val_223
+492 val_492
+149 val_149
+449 val_449
+218 val_218
+228 val_228
+138 val_138
+453 val_453
+30 val_30
+209 val_209
+64 val_64
+468 val_468
+76 val_76
+74 val_74
+342 val_342
+69 val_69
+230 val_230
+33 val_33
+368 val_368
+103 val_103
+296 val_296
+113 val_113
+216 val_216
+367 val_367
+344 val_344
+167 val_167
+274 val_274
+219 val_219
+239 val_239
+485 val_485
+116 val_116
+223 val_223
+256 val_256
+263 val_263
+70 val_70
+487 val_487
+480 val_480
+401 val_401
+288 val_288
+191 val_191
+5 val_5
+244 val_244
+438 val_438
+128 val_128
+467 val_467
+432 val_432
+202 val_202
+316 val_316
+229 val_229
+469 val_469
+463 val_463
+280 val_280
+2 val_2
+35 val_35
+283 val_283
+331 val_331
+235 val_235
+80 val_80
+44 val_44
+193 val_193
+321 val_321
+335 val_335
+104 val_104
+466 val_466
+366 val_366
+175 val_175
+403 val_403
+483 val_483
+53 val_53
+105 val_105
+257 val_257
+406 val_406
+409 val_409
+190 val_190
+406 val_406
+401 val_401
+114 val_114
+258 val_258
+90 val_90
+203 val_203
+262 val_262
+348 val_348
+424 val_424
+12 val_12
+396 val_396
+201 val_201
+217 val_217
+164 val_164
+431 val_431
+454 val_454
+478 val_478
+298 val_298
+125 val_125
+431 val_431
+164 val_164
+424 val_424
+187 val_187
+382 val_382
+5 val_5
+70 val_70
+397 val_397
+480 val_480
+291 val_291
+24 val_24
+351 val_351
+255 val_255
+104 val_104
+70 val_70
+163 val_163
+438 val_438
+119 val_119
+414 val_414
+200 val_200
+491 val_491
+237 val_237
+439 val_439
+360 val_360
+248 val_248
+479 val_479
+305 val_305
+417 val_417
+199 val_199
+444 val_444
+120 val_120
+429 val_429
+169 val_169
+443 val_443
+323 val_323
+325 val_325
+277 val_277
+230 val_230
+478 val_478
+178 val_178
+468 val_468
+310 val_310
+317 val_317
+333 val_333
+493 val_493
+460 val_460
+207 val_207
+249 val_249
+265 val_265
+480 val_480
+83 val_83
+136 val_136
+353 val_353
+172 val_172
+214 val_214
+462 val_462
+233 val_233
+406 val_406
+133 val_133
+175 val_175
+189 val_189
+454 val_454
+375 val_375
+401 val_401
+421 val_421
+407 val_407
+384 val_384
+256 val_256
+26 val_26
+134 val_134
+67 val_67
+384 val_384
+379 val_379
+18 val_18
+462 val_462
+492 val_492
+100 val_100
+298 val_298
+9 val_9
+341 val_341
+498 val_498
+146 val_146
+458 val_458
+362 val_362
+186 val_186
+285 val_285
+348 val_348
+167 val_167
+18 val_18
+273 val_273
+183 val_183
+281 val_281
+344 val_344
+97 val_97
+469 val_469
+315 val_315
+84 val_84
+28 val_28
+37 val_37
+448 val_448
+152 val_152
+348 val_348
+307 val_307
+194 val_194
+414 val_414
+477 val_477
+222 val_222
+126 val_126
+90 val_90
+169 val_169
+403 val_403
+400 val_400
+200 val_200
+97 val_97
diff --git a/sql/hive/src/test/resources/golden/view-17-544b822e12afa24d2c64d6149e19c12c b/sql/hive/src/test/resources/golden/view-17-544b822e12afa24d2c64d6149e19c12c
new file mode 100644
index 0000000000..7aae61e5eb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-17-544b822e12afa24d2c64d6149e19c12c
@@ -0,0 +1,500 @@
+238 val_238
+86 val_86
+311 val_311
+27 val_27
+165 val_165
+409 val_409
+255 val_255
+278 val_278
+98 val_98
+484 val_484
+265 val_265
+193 val_193
+401 val_401
+150 val_150
+273 val_273
+224 val_224
+369 val_369
+66 val_66
+128 val_128
+213 val_213
+146 val_146
+406 val_406
+429 val_429
+374 val_374
+152 val_152
+469 val_469
+145 val_145
+495 val_495
+37 val_37
+327 val_327
+281 val_281
+277 val_277
+209 val_209
+15 val_15
+82 val_82
+403 val_403
+166 val_166
+417 val_417
+430 val_430
+252 val_252
+292 val_292
+219 val_219
+287 val_287
+153 val_153
+193 val_193
+338 val_338
+446 val_446
+459 val_459
+394 val_394
+237 val_237
+482 val_482
+174 val_174
+413 val_413
+494 val_494
+207 val_207
+199 val_199
+466 val_466
+208 val_208
+174 val_174
+399 val_399
+396 val_396
+247 val_247
+417 val_417
+489 val_489
+162 val_162
+377 val_377
+397 val_397
+309 val_309
+365 val_365
+266 val_266
+439 val_439
+342 val_342
+367 val_367
+325 val_325
+167 val_167
+195 val_195
+475 val_475
+17 val_17
+113 val_113
+155 val_155
+203 val_203
+339 val_339
+0 val_0
+455 val_455
+128 val_128
+311 val_311
+316 val_316
+57 val_57
+302 val_302
+205 val_205
+149 val_149
+438 val_438
+345 val_345
+129 val_129
+170 val_170
+20 val_20
+489 val_489
+157 val_157
+378 val_378
+221 val_221
+92 val_92
+111 val_111
+47 val_47
+72 val_72
+4 val_4
+280 val_280
+35 val_35
+427 val_427
+277 val_277
+208 val_208
+356 val_356
+399 val_399
+169 val_169
+382 val_382
+498 val_498
+125 val_125
+386 val_386
+437 val_437
+469 val_469
+192 val_192
+286 val_286
+187 val_187
+176 val_176
+54 val_54
+459 val_459
+51 val_51
+138 val_138
+103 val_103
+239 val_239
+213 val_213
+216 val_216
+430 val_430
+278 val_278
+176 val_176
+289 val_289
+221 val_221
+65 val_65
+318 val_318
+332 val_332
+311 val_311
+275 val_275
+137 val_137
+241 val_241
+83 val_83
+333 val_333
+180 val_180
+284 val_284
+12 val_12
+230 val_230
+181 val_181
+67 val_67
+260 val_260
+404 val_404
+384 val_384
+489 val_489
+353 val_353
+373 val_373
+272 val_272
+138 val_138
+217 val_217
+84 val_84
+348 val_348
+466 val_466
+58 val_58
+8 val_8
+411 val_411
+230 val_230
+208 val_208
+348 val_348
+24 val_24
+463 val_463
+431 val_431
+179 val_179
+172 val_172
+42 val_42
+129 val_129
+158 val_158
+119 val_119
+496 val_496
+0 val_0
+322 val_322
+197 val_197
+468 val_468
+393 val_393
+454 val_454
+100 val_100
+298 val_298
+199 val_199
+191 val_191
+418 val_418
+96 val_96
+26 val_26
+165 val_165
+327 val_327
+230 val_230
+205 val_205
+120 val_120
+131 val_131
+51 val_51
+404 val_404
+43 val_43
+436 val_436
+156 val_156
+469 val_469
+468 val_468
+308 val_308
+95 val_95
+196 val_196
+288 val_288
+481 val_481
+457 val_457
+98 val_98
+282 val_282
+197 val_197
+187 val_187
+318 val_318
+318 val_318
+409 val_409
+470 val_470
+137 val_137
+369 val_369
+316 val_316
+169 val_169
+413 val_413
+85 val_85
+77 val_77
+0 val_0
+490 val_490
+87 val_87
+364 val_364
+179 val_179
+118 val_118
+134 val_134
+395 val_395
+282 val_282
+138 val_138
+238 val_238
+419 val_419
+15 val_15
+118 val_118
+72 val_72
+90 val_90
+307 val_307
+19 val_19
+435 val_435
+10 val_10
+277 val_277
+273 val_273
+306 val_306
+224 val_224
+309 val_309
+389 val_389
+327 val_327
+242 val_242
+369 val_369
+392 val_392
+272 val_272
+331 val_331
+401 val_401
+242 val_242
+452 val_452
+177 val_177
+226 val_226
+5 val_5
+497 val_497
+402 val_402
+396 val_396
+317 val_317
+395 val_395
+58 val_58
+35 val_35
+336 val_336
+95 val_95
+11 val_11
+168 val_168
+34 val_34
+229 val_229
+233 val_233
+143 val_143
+472 val_472
+322 val_322
+498 val_498
+160 val_160
+195 val_195
+42 val_42
+321 val_321
+430 val_430
+119 val_119
+489 val_489
+458 val_458
+78 val_78
+76 val_76
+41 val_41
+223 val_223
+492 val_492
+149 val_149
+449 val_449
+218 val_218
+228 val_228
+138 val_138
+453 val_453
+30 val_30
+209 val_209
+64 val_64
+468 val_468
+76 val_76
+74 val_74
+342 val_342
+69 val_69
+230 val_230
+33 val_33
+368 val_368
+103 val_103
+296 val_296
+113 val_113
+216 val_216
+367 val_367
+344 val_344
+167 val_167
+274 val_274
+219 val_219
+239 val_239
+485 val_485
+116 val_116
+223 val_223
+256 val_256
+263 val_263
+70 val_70
+487 val_487
+480 val_480
+401 val_401
+288 val_288
+191 val_191
+5 val_5
+244 val_244
+438 val_438
+128 val_128
+467 val_467
+432 val_432
+202 val_202
+316 val_316
+229 val_229
+469 val_469
+463 val_463
+280 val_280
+2 val_2
+35 val_35
+283 val_283
+331 val_331
+235 val_235
+80 val_80
+44 val_44
+193 val_193
+321 val_321
+335 val_335
+104 val_104
+466 val_466
+366 val_366
+175 val_175
+403 val_403
+483 val_483
+53 val_53
+105 val_105
+257 val_257
+406 val_406
+409 val_409
+190 val_190
+406 val_406
+401 val_401
+114 val_114
+258 val_258
+90 val_90
+203 val_203
+262 val_262
+348 val_348
+424 val_424
+12 val_12
+396 val_396
+201 val_201
+217 val_217
+164 val_164
+431 val_431
+454 val_454
+478 val_478
+298 val_298
+125 val_125
+431 val_431
+164 val_164
+424 val_424
+187 val_187
+382 val_382
+5 val_5
+70 val_70
+397 val_397
+480 val_480
+291 val_291
+24 val_24
+351 val_351
+255 val_255
+104 val_104
+70 val_70
+163 val_163
+438 val_438
+119 val_119
+414 val_414
+200 val_200
+491 val_491
+237 val_237
+439 val_439
+360 val_360
+248 val_248
+479 val_479
+305 val_305
+417 val_417
+199 val_199
+444 val_444
+120 val_120
+429 val_429
+169 val_169
+443 val_443
+323 val_323
+325 val_325
+277 val_277
+230 val_230
+478 val_478
+178 val_178
+468 val_468
+310 val_310
+317 val_317
+333 val_333
+493 val_493
+460 val_460
+207 val_207
+249 val_249
+265 val_265
+480 val_480
+83 val_83
+136 val_136
+353 val_353
+172 val_172
+214 val_214
+462 val_462
+233 val_233
+406 val_406
+133 val_133
+175 val_175
+189 val_189
+454 val_454
+375 val_375
+401 val_401
+421 val_421
+407 val_407
+384 val_384
+256 val_256
+26 val_26
+134 val_134
+67 val_67
+384 val_384
+379 val_379
+18 val_18
+462 val_462
+492 val_492
+100 val_100
+298 val_298
+9 val_9
+341 val_341
+498 val_498
+146 val_146
+458 val_458
+362 val_362
+186 val_186
+285 val_285
+348 val_348
+167 val_167
+18 val_18
+273 val_273
+183 val_183
+281 val_281
+344 val_344
+97 val_97
+469 val_469
+315 val_315
+84 val_84
+28 val_28
+37 val_37
+448 val_448
+152 val_152
+348 val_348
+307 val_307
+194 val_194
+414 val_414
+477 val_477
+222 val_222
+126 val_126
+90 val_90
+169 val_169
+403 val_403
+400 val_400
+200 val_200
+97 val_97
diff --git a/sql/hive/src/test/resources/golden/view-18-cd6a123a71769b082000669292e57add b/sql/hive/src/test/resources/golden/view-18-cd6a123a71769b082000669292e57add
new file mode 100644
index 0000000000..68782c7a27
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-18-cd6a123a71769b082000669292e57add
@@ -0,0 +1,1028 @@
+238 val_238 238
+238 val_238 238
+86 val_86 86
+311 val_311 311
+311 val_311 311
+311 val_311 311
+27 val_27 27
+165 val_165 165
+165 val_165 165
+409 val_409 409
+409 val_409 409
+409 val_409 409
+255 val_255 255
+255 val_255 255
+278 val_278 278
+278 val_278 278
+98 val_98 98
+98 val_98 98
+484 val_484 484
+265 val_265 265
+265 val_265 265
+193 val_193 193
+193 val_193 193
+193 val_193 193
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+150 val_150 150
+273 val_273 273
+273 val_273 273
+273 val_273 273
+224 val_224 224
+224 val_224 224
+369 val_369 369
+369 val_369 369
+369 val_369 369
+66 val_66 66
+128 val_128 128
+128 val_128 128
+128 val_128 128
+213 val_213 213
+213 val_213 213
+146 val_146 146
+146 val_146 146
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+429 val_429 429
+429 val_429 429
+374 val_374 374
+152 val_152 152
+152 val_152 152
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+145 val_145 145
+495 val_495 495
+37 val_37 37
+37 val_37 37
+327 val_327 327
+327 val_327 327
+327 val_327 327
+281 val_281 281
+281 val_281 281
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+209 val_209 209
+209 val_209 209
+15 val_15 15
+15 val_15 15
+82 val_82 82
+403 val_403 403
+403 val_403 403
+403 val_403 403
+166 val_166 166
+417 val_417 417
+417 val_417 417
+417 val_417 417
+430 val_430 430
+430 val_430 430
+430 val_430 430
+252 val_252 252
+292 val_292 292
+219 val_219 219
+219 val_219 219
+287 val_287 287
+153 val_153 153
+193 val_193 193
+193 val_193 193
+193 val_193 193
+338 val_338 338
+446 val_446 446
+459 val_459 459
+459 val_459 459
+394 val_394 394
+237 val_237 237
+237 val_237 237
+482 val_482 482
+174 val_174 174
+174 val_174 174
+413 val_413 413
+413 val_413 413
+494 val_494 494
+207 val_207 207
+207 val_207 207
+199 val_199 199
+199 val_199 199
+199 val_199 199
+466 val_466 466
+466 val_466 466
+466 val_466 466
+208 val_208 208
+208 val_208 208
+208 val_208 208
+174 val_174 174
+174 val_174 174
+399 val_399 399
+399 val_399 399
+396 val_396 396
+396 val_396 396
+396 val_396 396
+247 val_247 247
+417 val_417 417
+417 val_417 417
+417 val_417 417
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+162 val_162 162
+377 val_377 377
+397 val_397 397
+397 val_397 397
+309 val_309 309
+309 val_309 309
+365 val_365 365
+266 val_266 266
+439 val_439 439
+439 val_439 439
+342 val_342 342
+342 val_342 342
+367 val_367 367
+367 val_367 367
+325 val_325 325
+325 val_325 325
+167 val_167 167
+167 val_167 167
+167 val_167 167
+195 val_195 195
+195 val_195 195
+475 val_475 475
+17 val_17 17
+113 val_113 113
+113 val_113 113
+155 val_155 155
+203 val_203 203
+203 val_203 203
+339 val_339 339
+0 val_0 0
+0 val_0 0
+0 val_0 0
+455 val_455 455
+128 val_128 128
+128 val_128 128
+128 val_128 128
+311 val_311 311
+311 val_311 311
+311 val_311 311
+316 val_316 316
+316 val_316 316
+316 val_316 316
+57 val_57 57
+302 val_302 302
+205 val_205 205
+205 val_205 205
+149 val_149 149
+149 val_149 149
+438 val_438 438
+438 val_438 438
+438 val_438 438
+345 val_345 345
+129 val_129 129
+129 val_129 129
+170 val_170 170
+20 val_20 20
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+157 val_157 157
+378 val_378 378
+221 val_221 221
+221 val_221 221
+92 val_92 92
+111 val_111 111
+47 val_47 47
+72 val_72 72
+72 val_72 72
+4 val_4 4
+280 val_280 280
+280 val_280 280
+35 val_35 35
+35 val_35 35
+35 val_35 35
+427 val_427 427
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+208 val_208 208
+208 val_208 208
+208 val_208 208
+356 val_356 356
+399 val_399 399
+399 val_399 399
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+382 val_382 382
+382 val_382 382
+498 val_498 498
+498 val_498 498
+498 val_498 498
+125 val_125 125
+125 val_125 125
+386 val_386 386
+437 val_437 437
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+192 val_192 192
+286 val_286 286
+187 val_187 187
+187 val_187 187
+187 val_187 187
+176 val_176 176
+176 val_176 176
+54 val_54 54
+459 val_459 459
+459 val_459 459
+51 val_51 51
+51 val_51 51
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+103 val_103 103
+103 val_103 103
+239 val_239 239
+239 val_239 239
+213 val_213 213
+213 val_213 213
+216 val_216 216
+216 val_216 216
+430 val_430 430
+430 val_430 430
+430 val_430 430
+278 val_278 278
+278 val_278 278
+176 val_176 176
+176 val_176 176
+289 val_289 289
+221 val_221 221
+221 val_221 221
+65 val_65 65
+318 val_318 318
+318 val_318 318
+318 val_318 318
+332 val_332 332
+311 val_311 311
+311 val_311 311
+311 val_311 311
+275 val_275 275
+137 val_137 137
+137 val_137 137
+241 val_241 241
+83 val_83 83
+83 val_83 83
+333 val_333 333
+333 val_333 333
+180 val_180 180
+284 val_284 284
+12 val_12 12
+12 val_12 12
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+181 val_181 181
+67 val_67 67
+67 val_67 67
+260 val_260 260
+404 val_404 404
+404 val_404 404
+384 val_384 384
+384 val_384 384
+384 val_384 384
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+353 val_353 353
+353 val_353 353
+373 val_373 373
+272 val_272 272
+272 val_272 272
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+217 val_217 217
+217 val_217 217
+84 val_84 84
+84 val_84 84
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+466 val_466 466
+466 val_466 466
+466 val_466 466
+58 val_58 58
+58 val_58 58
+8 val_8 8
+411 val_411 411
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+208 val_208 208
+208 val_208 208
+208 val_208 208
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+24 val_24 24
+24 val_24 24
+463 val_463 463
+463 val_463 463
+431 val_431 431
+431 val_431 431
+431 val_431 431
+179 val_179 179
+179 val_179 179
+172 val_172 172
+172 val_172 172
+42 val_42 42
+42 val_42 42
+129 val_129 129
+129 val_129 129
+158 val_158 158
+119 val_119 119
+119 val_119 119
+119 val_119 119
+496 val_496 496
+0 val_0 0
+0 val_0 0
+0 val_0 0
+322 val_322 322
+322 val_322 322
+197 val_197 197
+197 val_197 197
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+393 val_393 393
+454 val_454 454
+454 val_454 454
+454 val_454 454
+100 val_100 100
+100 val_100 100
+298 val_298 298
+298 val_298 298
+298 val_298 298
+199 val_199 199
+199 val_199 199
+199 val_199 199
+191 val_191 191
+191 val_191 191
+418 val_418 418
+96 val_96 96
+26 val_26 26
+26 val_26 26
+165 val_165 165
+165 val_165 165
+327 val_327 327
+327 val_327 327
+327 val_327 327
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+205 val_205 205
+205 val_205 205
+120 val_120 120
+120 val_120 120
+131 val_131 131
+51 val_51 51
+51 val_51 51
+404 val_404 404
+404 val_404 404
+43 val_43 43
+436 val_436 436
+156 val_156 156
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+308 val_308 308
+95 val_95 95
+95 val_95 95
+196 val_196 196
+288 val_288 288
+288 val_288 288
+481 val_481 481
+457 val_457 457
+98 val_98 98
+98 val_98 98
+282 val_282 282
+282 val_282 282
+197 val_197 197
+197 val_197 197
+187 val_187 187
+187 val_187 187
+187 val_187 187
+318 val_318 318
+318 val_318 318
+318 val_318 318
+318 val_318 318
+318 val_318 318
+318 val_318 318
+409 val_409 409
+409 val_409 409
+409 val_409 409
+470 val_470 470
+137 val_137 137
+137 val_137 137
+369 val_369 369
+369 val_369 369
+369 val_369 369
+316 val_316 316
+316 val_316 316
+316 val_316 316
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+413 val_413 413
+413 val_413 413
+85 val_85 85
+77 val_77 77
+0 val_0 0
+0 val_0 0
+0 val_0 0
+490 val_490 490
+87 val_87 87
+364 val_364 364
+179 val_179 179
+179 val_179 179
+118 val_118 118
+118 val_118 118
+134 val_134 134
+134 val_134 134
+395 val_395 395
+395 val_395 395
+282 val_282 282
+282 val_282 282
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+238 val_238 238
+238 val_238 238
+419 val_419 419
+15 val_15 15
+15 val_15 15
+118 val_118 118
+118 val_118 118
+72 val_72 72
+72 val_72 72
+90 val_90 90
+90 val_90 90
+90 val_90 90
+307 val_307 307
+307 val_307 307
+19 val_19 19
+435 val_435 435
+10 val_10 10
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+273 val_273 273
+273 val_273 273
+273 val_273 273
+306 val_306 306
+224 val_224 224
+224 val_224 224
+309 val_309 309
+309 val_309 309
+389 val_389 389
+327 val_327 327
+327 val_327 327
+327 val_327 327
+242 val_242 242
+242 val_242 242
+369 val_369 369
+369 val_369 369
+369 val_369 369
+392 val_392 392
+272 val_272 272
+272 val_272 272
+331 val_331 331
+331 val_331 331
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+242 val_242 242
+242 val_242 242
+452 val_452 452
+177 val_177 177
+226 val_226 226
+5 val_5 5
+5 val_5 5
+5 val_5 5
+497 val_497 497
+402 val_402 402
+396 val_396 396
+396 val_396 396
+396 val_396 396
+317 val_317 317
+317 val_317 317
+395 val_395 395
+395 val_395 395
+58 val_58 58
+58 val_58 58
+35 val_35 35
+35 val_35 35
+35 val_35 35
+336 val_336 336
+95 val_95 95
+95 val_95 95
+11 val_11 11
+168 val_168 168
+34 val_34 34
+229 val_229 229
+229 val_229 229
+233 val_233 233
+233 val_233 233
+143 val_143 143
+472 val_472 472
+322 val_322 322
+322 val_322 322
+498 val_498 498
+498 val_498 498
+498 val_498 498
+160 val_160 160
+195 val_195 195
+195 val_195 195
+42 val_42 42
+42 val_42 42
+321 val_321 321
+321 val_321 321
+430 val_430 430
+430 val_430 430
+430 val_430 430
+119 val_119 119
+119 val_119 119
+119 val_119 119
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+458 val_458 458
+458 val_458 458
+78 val_78 78
+76 val_76 76
+76 val_76 76
+41 val_41 41
+223 val_223 223
+223 val_223 223
+492 val_492 492
+492 val_492 492
+149 val_149 149
+149 val_149 149
+449 val_449 449
+218 val_218 218
+228 val_228 228
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+453 val_453 453
+30 val_30 30
+209 val_209 209
+209 val_209 209
+64 val_64 64
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+76 val_76 76
+76 val_76 76
+74 val_74 74
+342 val_342 342
+342 val_342 342
+69 val_69 69
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+33 val_33 33
+368 val_368 368
+103 val_103 103
+103 val_103 103
+296 val_296 296
+113 val_113 113
+113 val_113 113
+216 val_216 216
+216 val_216 216
+367 val_367 367
+367 val_367 367
+344 val_344 344
+344 val_344 344
+167 val_167 167
+167 val_167 167
+167 val_167 167
+274 val_274 274
+219 val_219 219
+219 val_219 219
+239 val_239 239
+239 val_239 239
+485 val_485 485
+116 val_116 116
+223 val_223 223
+223 val_223 223
+256 val_256 256
+256 val_256 256
+263 val_263 263
+70 val_70 70
+70 val_70 70
+70 val_70 70
+487 val_487 487
+480 val_480 480
+480 val_480 480
+480 val_480 480
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+288 val_288 288
+288 val_288 288
+191 val_191 191
+191 val_191 191
+5 val_5 5
+5 val_5 5
+5 val_5 5
+244 val_244 244
+438 val_438 438
+438 val_438 438
+438 val_438 438
+128 val_128 128
+128 val_128 128
+128 val_128 128
+467 val_467 467
+432 val_432 432
+202 val_202 202
+316 val_316 316
+316 val_316 316
+316 val_316 316
+229 val_229 229
+229 val_229 229
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+463 val_463 463
+463 val_463 463
+280 val_280 280
+280 val_280 280
+2 val_2 2
+35 val_35 35
+35 val_35 35
+35 val_35 35
+283 val_283 283
+331 val_331 331
+331 val_331 331
+235 val_235 235
+80 val_80 80
+44 val_44 44
+193 val_193 193
+193 val_193 193
+193 val_193 193
+321 val_321 321
+321 val_321 321
+335 val_335 335
+104 val_104 104
+104 val_104 104
+466 val_466 466
+466 val_466 466
+466 val_466 466
+366 val_366 366
+175 val_175 175
+175 val_175 175
+403 val_403 403
+403 val_403 403
+403 val_403 403
+483 val_483 483
+53 val_53 53
+105 val_105 105
+257 val_257 257
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+409 val_409 409
+409 val_409 409
+409 val_409 409
+190 val_190 190
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+114 val_114 114
+258 val_258 258
+90 val_90 90
+90 val_90 90
+90 val_90 90
+203 val_203 203
+203 val_203 203
+262 val_262 262
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+424 val_424 424
+424 val_424 424
+12 val_12 12
+12 val_12 12
+396 val_396 396
+396 val_396 396
+396 val_396 396
+201 val_201 201
+217 val_217 217
+217 val_217 217
+164 val_164 164
+164 val_164 164
+431 val_431 431
+431 val_431 431
+431 val_431 431
+454 val_454 454
+454 val_454 454
+454 val_454 454
+478 val_478 478
+478 val_478 478
+298 val_298 298
+298 val_298 298
+298 val_298 298
+125 val_125 125
+125 val_125 125
+431 val_431 431
+431 val_431 431
+431 val_431 431
+164 val_164 164
+164 val_164 164
+424 val_424 424
+424 val_424 424
+187 val_187 187
+187 val_187 187
+187 val_187 187
+382 val_382 382
+382 val_382 382
+5 val_5 5
+5 val_5 5
+5 val_5 5
+70 val_70 70
+70 val_70 70
+70 val_70 70
+397 val_397 397
+397 val_397 397
+480 val_480 480
+480 val_480 480
+480 val_480 480
+291 val_291 291
+24 val_24 24
+24 val_24 24
+351 val_351 351
+255 val_255 255
+255 val_255 255
+104 val_104 104
+104 val_104 104
+70 val_70 70
+70 val_70 70
+70 val_70 70
+163 val_163 163
+438 val_438 438
+438 val_438 438
+438 val_438 438
+119 val_119 119
+119 val_119 119
+119 val_119 119
+414 val_414 414
+414 val_414 414
+200 val_200 200
+200 val_200 200
+491 val_491 491
+237 val_237 237
+237 val_237 237
+439 val_439 439
+439 val_439 439
+360 val_360 360
+248 val_248 248
+479 val_479 479
+305 val_305 305
+417 val_417 417
+417 val_417 417
+417 val_417 417
+199 val_199 199
+199 val_199 199
+199 val_199 199
+444 val_444 444
+120 val_120 120
+120 val_120 120
+429 val_429 429
+429 val_429 429
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+443 val_443 443
+323 val_323 323
+325 val_325 325
+325 val_325 325
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+478 val_478 478
+478 val_478 478
+178 val_178 178
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+310 val_310 310
+317 val_317 317
+317 val_317 317
+333 val_333 333
+333 val_333 333
+493 val_493 493
+460 val_460 460
+207 val_207 207
+207 val_207 207
+249 val_249 249
+265 val_265 265
+265 val_265 265
+480 val_480 480
+480 val_480 480
+480 val_480 480
+83 val_83 83
+83 val_83 83
+136 val_136 136
+353 val_353 353
+353 val_353 353
+172 val_172 172
+172 val_172 172
+214 val_214 214
+462 val_462 462
+462 val_462 462
+233 val_233 233
+233 val_233 233
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+133 val_133 133
+175 val_175 175
+175 val_175 175
+189 val_189 189
+454 val_454 454
+454 val_454 454
+454 val_454 454
+375 val_375 375
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+421 val_421 421
+407 val_407 407
+384 val_384 384
+384 val_384 384
+384 val_384 384
+256 val_256 256
+256 val_256 256
+26 val_26 26
+26 val_26 26
+134 val_134 134
+134 val_134 134
+67 val_67 67
+67 val_67 67
+384 val_384 384
+384 val_384 384
+384 val_384 384
+379 val_379 379
+18 val_18 18
+18 val_18 18
+462 val_462 462
+462 val_462 462
+492 val_492 492
+492 val_492 492
+100 val_100 100
+100 val_100 100
+298 val_298 298
+298 val_298 298
+298 val_298 298
+9 val_9 9
+341 val_341 341
+498 val_498 498
+498 val_498 498
+498 val_498 498
+146 val_146 146
+146 val_146 146
+458 val_458 458
+458 val_458 458
+362 val_362 362
+186 val_186 186
+285 val_285 285
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+167 val_167 167
+167 val_167 167
+167 val_167 167
+18 val_18 18
+18 val_18 18
+273 val_273 273
+273 val_273 273
+273 val_273 273
+183 val_183 183
+281 val_281 281
+281 val_281 281
+344 val_344 344
+344 val_344 344
+97 val_97 97
+97 val_97 97
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+315 val_315 315
+84 val_84 84
+84 val_84 84
+28 val_28 28
+37 val_37 37
+37 val_37 37
+448 val_448 448
+152 val_152 152
+152 val_152 152
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+307 val_307 307
+307 val_307 307
+194 val_194 194
+414 val_414 414
+414 val_414 414
+477 val_477 477
+222 val_222 222
+126 val_126 126
+90 val_90 90
+90 val_90 90
+90 val_90 90
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+403 val_403 403
+403 val_403 403
+403 val_403 403
+400 val_400 400
+200 val_200 200
+200 val_200 200
+97 val_97 97
+97 val_97 97
diff --git a/sql/hive/src/test/resources/golden/view-19-4a8f62f10a8a7b1f6e0d1c15481590a6 b/sql/hive/src/test/resources/golden/view-19-4a8f62f10a8a7b1f6e0d1c15481590a6
new file mode 100644
index 0000000000..7aae61e5eb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-19-4a8f62f10a8a7b1f6e0d1c15481590a6
@@ -0,0 +1,500 @@
+238 val_238
+86 val_86
+311 val_311
+27 val_27
+165 val_165
+409 val_409
+255 val_255
+278 val_278
+98 val_98
+484 val_484
+265 val_265
+193 val_193
+401 val_401
+150 val_150
+273 val_273
+224 val_224
+369 val_369
+66 val_66
+128 val_128
+213 val_213
+146 val_146
+406 val_406
+429 val_429
+374 val_374
+152 val_152
+469 val_469
+145 val_145
+495 val_495
+37 val_37
+327 val_327
+281 val_281
+277 val_277
+209 val_209
+15 val_15
+82 val_82
+403 val_403
+166 val_166
+417 val_417
+430 val_430
+252 val_252
+292 val_292
+219 val_219
+287 val_287
+153 val_153
+193 val_193
+338 val_338
+446 val_446
+459 val_459
+394 val_394
+237 val_237
+482 val_482
+174 val_174
+413 val_413
+494 val_494
+207 val_207
+199 val_199
+466 val_466
+208 val_208
+174 val_174
+399 val_399
+396 val_396
+247 val_247
+417 val_417
+489 val_489
+162 val_162
+377 val_377
+397 val_397
+309 val_309
+365 val_365
+266 val_266
+439 val_439
+342 val_342
+367 val_367
+325 val_325
+167 val_167
+195 val_195
+475 val_475
+17 val_17
+113 val_113
+155 val_155
+203 val_203
+339 val_339
+0 val_0
+455 val_455
+128 val_128
+311 val_311
+316 val_316
+57 val_57
+302 val_302
+205 val_205
+149 val_149
+438 val_438
+345 val_345
+129 val_129
+170 val_170
+20 val_20
+489 val_489
+157 val_157
+378 val_378
+221 val_221
+92 val_92
+111 val_111
+47 val_47
+72 val_72
+4 val_4
+280 val_280
+35 val_35
+427 val_427
+277 val_277
+208 val_208
+356 val_356
+399 val_399
+169 val_169
+382 val_382
+498 val_498
+125 val_125
+386 val_386
+437 val_437
+469 val_469
+192 val_192
+286 val_286
+187 val_187
+176 val_176
+54 val_54
+459 val_459
+51 val_51
+138 val_138
+103 val_103
+239 val_239
+213 val_213
+216 val_216
+430 val_430
+278 val_278
+176 val_176
+289 val_289
+221 val_221
+65 val_65
+318 val_318
+332 val_332
+311 val_311
+275 val_275
+137 val_137
+241 val_241
+83 val_83
+333 val_333
+180 val_180
+284 val_284
+12 val_12
+230 val_230
+181 val_181
+67 val_67
+260 val_260
+404 val_404
+384 val_384
+489 val_489
+353 val_353
+373 val_373
+272 val_272
+138 val_138
+217 val_217
+84 val_84
+348 val_348
+466 val_466
+58 val_58
+8 val_8
+411 val_411
+230 val_230
+208 val_208
+348 val_348
+24 val_24
+463 val_463
+431 val_431
+179 val_179
+172 val_172
+42 val_42
+129 val_129
+158 val_158
+119 val_119
+496 val_496
+0 val_0
+322 val_322
+197 val_197
+468 val_468
+393 val_393
+454 val_454
+100 val_100
+298 val_298
+199 val_199
+191 val_191
+418 val_418
+96 val_96
+26 val_26
+165 val_165
+327 val_327
+230 val_230
+205 val_205
+120 val_120
+131 val_131
+51 val_51
+404 val_404
+43 val_43
+436 val_436
+156 val_156
+469 val_469
+468 val_468
+308 val_308
+95 val_95
+196 val_196
+288 val_288
+481 val_481
+457 val_457
+98 val_98
+282 val_282
+197 val_197
+187 val_187
+318 val_318
+318 val_318
+409 val_409
+470 val_470
+137 val_137
+369 val_369
+316 val_316
+169 val_169
+413 val_413
+85 val_85
+77 val_77
+0 val_0
+490 val_490
+87 val_87
+364 val_364
+179 val_179
+118 val_118
+134 val_134
+395 val_395
+282 val_282
+138 val_138
+238 val_238
+419 val_419
+15 val_15
+118 val_118
+72 val_72
+90 val_90
+307 val_307
+19 val_19
+435 val_435
+10 val_10
+277 val_277
+273 val_273
+306 val_306
+224 val_224
+309 val_309
+389 val_389
+327 val_327
+242 val_242
+369 val_369
+392 val_392
+272 val_272
+331 val_331
+401 val_401
+242 val_242
+452 val_452
+177 val_177
+226 val_226
+5 val_5
+497 val_497
+402 val_402
+396 val_396
+317 val_317
+395 val_395
+58 val_58
+35 val_35
+336 val_336
+95 val_95
+11 val_11
+168 val_168
+34 val_34
+229 val_229
+233 val_233
+143 val_143
+472 val_472
+322 val_322
+498 val_498
+160 val_160
+195 val_195
+42 val_42
+321 val_321
+430 val_430
+119 val_119
+489 val_489
+458 val_458
+78 val_78
+76 val_76
+41 val_41
+223 val_223
+492 val_492
+149 val_149
+449 val_449
+218 val_218
+228 val_228
+138 val_138
+453 val_453
+30 val_30
+209 val_209
+64 val_64
+468 val_468
+76 val_76
+74 val_74
+342 val_342
+69 val_69
+230 val_230
+33 val_33
+368 val_368
+103 val_103
+296 val_296
+113 val_113
+216 val_216
+367 val_367
+344 val_344
+167 val_167
+274 val_274
+219 val_219
+239 val_239
+485 val_485
+116 val_116
+223 val_223
+256 val_256
+263 val_263
+70 val_70
+487 val_487
+480 val_480
+401 val_401
+288 val_288
+191 val_191
+5 val_5
+244 val_244
+438 val_438
+128 val_128
+467 val_467
+432 val_432
+202 val_202
+316 val_316
+229 val_229
+469 val_469
+463 val_463
+280 val_280
+2 val_2
+35 val_35
+283 val_283
+331 val_331
+235 val_235
+80 val_80
+44 val_44
+193 val_193
+321 val_321
+335 val_335
+104 val_104
+466 val_466
+366 val_366
+175 val_175
+403 val_403
+483 val_483
+53 val_53
+105 val_105
+257 val_257
+406 val_406
+409 val_409
+190 val_190
+406 val_406
+401 val_401
+114 val_114
+258 val_258
+90 val_90
+203 val_203
+262 val_262
+348 val_348
+424 val_424
+12 val_12
+396 val_396
+201 val_201
+217 val_217
+164 val_164
+431 val_431
+454 val_454
+478 val_478
+298 val_298
+125 val_125
+431 val_431
+164 val_164
+424 val_424
+187 val_187
+382 val_382
+5 val_5
+70 val_70
+397 val_397
+480 val_480
+291 val_291
+24 val_24
+351 val_351
+255 val_255
+104 val_104
+70 val_70
+163 val_163
+438 val_438
+119 val_119
+414 val_414
+200 val_200
+491 val_491
+237 val_237
+439 val_439
+360 val_360
+248 val_248
+479 val_479
+305 val_305
+417 val_417
+199 val_199
+444 val_444
+120 val_120
+429 val_429
+169 val_169
+443 val_443
+323 val_323
+325 val_325
+277 val_277
+230 val_230
+478 val_478
+178 val_178
+468 val_468
+310 val_310
+317 val_317
+333 val_333
+493 val_493
+460 val_460
+207 val_207
+249 val_249
+265 val_265
+480 val_480
+83 val_83
+136 val_136
+353 val_353
+172 val_172
+214 val_214
+462 val_462
+233 val_233
+406 val_406
+133 val_133
+175 val_175
+189 val_189
+454 val_454
+375 val_375
+401 val_401
+421 val_421
+407 val_407
+384 val_384
+256 val_256
+26 val_26
+134 val_134
+67 val_67
+384 val_384
+379 val_379
+18 val_18
+462 val_462
+492 val_492
+100 val_100
+298 val_298
+9 val_9
+341 val_341
+498 val_498
+146 val_146
+458 val_458
+362 val_362
+186 val_186
+285 val_285
+348 val_348
+167 val_167
+18 val_18
+273 val_273
+183 val_183
+281 val_281
+344 val_344
+97 val_97
+469 val_469
+315 val_315
+84 val_84
+28 val_28
+37 val_37
+448 val_448
+152 val_152
+348 val_348
+307 val_307
+194 val_194
+414 val_414
+477 val_477
+222 val_222
+126 val_126
+90 val_90
+169 val_169
+403 val_403
+400 val_400
+200 val_200
+97 val_97
diff --git a/sql/hive/src/test/resources/golden/view-2-9c529f486fa81a032bfe1253808fca8 b/sql/hive/src/test/resources/golden/view-2-9c529f486fa81a032bfe1253808fca8
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-2-9c529f486fa81a032bfe1253808fca8
diff --git a/sql/hive/src/test/resources/golden/view-20-92aa822cb9dc29a1d3ad37d3ebaa344a b/sql/hive/src/test/resources/golden/view-20-92aa822cb9dc29a1d3ad37d3ebaa344a
new file mode 100644
index 0000000000..7aae61e5eb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-20-92aa822cb9dc29a1d3ad37d3ebaa344a
@@ -0,0 +1,500 @@
+238 val_238
+86 val_86
+311 val_311
+27 val_27
+165 val_165
+409 val_409
+255 val_255
+278 val_278
+98 val_98
+484 val_484
+265 val_265
+193 val_193
+401 val_401
+150 val_150
+273 val_273
+224 val_224
+369 val_369
+66 val_66
+128 val_128
+213 val_213
+146 val_146
+406 val_406
+429 val_429
+374 val_374
+152 val_152
+469 val_469
+145 val_145
+495 val_495
+37 val_37
+327 val_327
+281 val_281
+277 val_277
+209 val_209
+15 val_15
+82 val_82
+403 val_403
+166 val_166
+417 val_417
+430 val_430
+252 val_252
+292 val_292
+219 val_219
+287 val_287
+153 val_153
+193 val_193
+338 val_338
+446 val_446
+459 val_459
+394 val_394
+237 val_237
+482 val_482
+174 val_174
+413 val_413
+494 val_494
+207 val_207
+199 val_199
+466 val_466
+208 val_208
+174 val_174
+399 val_399
+396 val_396
+247 val_247
+417 val_417
+489 val_489
+162 val_162
+377 val_377
+397 val_397
+309 val_309
+365 val_365
+266 val_266
+439 val_439
+342 val_342
+367 val_367
+325 val_325
+167 val_167
+195 val_195
+475 val_475
+17 val_17
+113 val_113
+155 val_155
+203 val_203
+339 val_339
+0 val_0
+455 val_455
+128 val_128
+311 val_311
+316 val_316
+57 val_57
+302 val_302
+205 val_205
+149 val_149
+438 val_438
+345 val_345
+129 val_129
+170 val_170
+20 val_20
+489 val_489
+157 val_157
+378 val_378
+221 val_221
+92 val_92
+111 val_111
+47 val_47
+72 val_72
+4 val_4
+280 val_280
+35 val_35
+427 val_427
+277 val_277
+208 val_208
+356 val_356
+399 val_399
+169 val_169
+382 val_382
+498 val_498
+125 val_125
+386 val_386
+437 val_437
+469 val_469
+192 val_192
+286 val_286
+187 val_187
+176 val_176
+54 val_54
+459 val_459
+51 val_51
+138 val_138
+103 val_103
+239 val_239
+213 val_213
+216 val_216
+430 val_430
+278 val_278
+176 val_176
+289 val_289
+221 val_221
+65 val_65
+318 val_318
+332 val_332
+311 val_311
+275 val_275
+137 val_137
+241 val_241
+83 val_83
+333 val_333
+180 val_180
+284 val_284
+12 val_12
+230 val_230
+181 val_181
+67 val_67
+260 val_260
+404 val_404
+384 val_384
+489 val_489
+353 val_353
+373 val_373
+272 val_272
+138 val_138
+217 val_217
+84 val_84
+348 val_348
+466 val_466
+58 val_58
+8 val_8
+411 val_411
+230 val_230
+208 val_208
+348 val_348
+24 val_24
+463 val_463
+431 val_431
+179 val_179
+172 val_172
+42 val_42
+129 val_129
+158 val_158
+119 val_119
+496 val_496
+0 val_0
+322 val_322
+197 val_197
+468 val_468
+393 val_393
+454 val_454
+100 val_100
+298 val_298
+199 val_199
+191 val_191
+418 val_418
+96 val_96
+26 val_26
+165 val_165
+327 val_327
+230 val_230
+205 val_205
+120 val_120
+131 val_131
+51 val_51
+404 val_404
+43 val_43
+436 val_436
+156 val_156
+469 val_469
+468 val_468
+308 val_308
+95 val_95
+196 val_196
+288 val_288
+481 val_481
+457 val_457
+98 val_98
+282 val_282
+197 val_197
+187 val_187
+318 val_318
+318 val_318
+409 val_409
+470 val_470
+137 val_137
+369 val_369
+316 val_316
+169 val_169
+413 val_413
+85 val_85
+77 val_77
+0 val_0
+490 val_490
+87 val_87
+364 val_364
+179 val_179
+118 val_118
+134 val_134
+395 val_395
+282 val_282
+138 val_138
+238 val_238
+419 val_419
+15 val_15
+118 val_118
+72 val_72
+90 val_90
+307 val_307
+19 val_19
+435 val_435
+10 val_10
+277 val_277
+273 val_273
+306 val_306
+224 val_224
+309 val_309
+389 val_389
+327 val_327
+242 val_242
+369 val_369
+392 val_392
+272 val_272
+331 val_331
+401 val_401
+242 val_242
+452 val_452
+177 val_177
+226 val_226
+5 val_5
+497 val_497
+402 val_402
+396 val_396
+317 val_317
+395 val_395
+58 val_58
+35 val_35
+336 val_336
+95 val_95
+11 val_11
+168 val_168
+34 val_34
+229 val_229
+233 val_233
+143 val_143
+472 val_472
+322 val_322
+498 val_498
+160 val_160
+195 val_195
+42 val_42
+321 val_321
+430 val_430
+119 val_119
+489 val_489
+458 val_458
+78 val_78
+76 val_76
+41 val_41
+223 val_223
+492 val_492
+149 val_149
+449 val_449
+218 val_218
+228 val_228
+138 val_138
+453 val_453
+30 val_30
+209 val_209
+64 val_64
+468 val_468
+76 val_76
+74 val_74
+342 val_342
+69 val_69
+230 val_230
+33 val_33
+368 val_368
+103 val_103
+296 val_296
+113 val_113
+216 val_216
+367 val_367
+344 val_344
+167 val_167
+274 val_274
+219 val_219
+239 val_239
+485 val_485
+116 val_116
+223 val_223
+256 val_256
+263 val_263
+70 val_70
+487 val_487
+480 val_480
+401 val_401
+288 val_288
+191 val_191
+5 val_5
+244 val_244
+438 val_438
+128 val_128
+467 val_467
+432 val_432
+202 val_202
+316 val_316
+229 val_229
+469 val_469
+463 val_463
+280 val_280
+2 val_2
+35 val_35
+283 val_283
+331 val_331
+235 val_235
+80 val_80
+44 val_44
+193 val_193
+321 val_321
+335 val_335
+104 val_104
+466 val_466
+366 val_366
+175 val_175
+403 val_403
+483 val_483
+53 val_53
+105 val_105
+257 val_257
+406 val_406
+409 val_409
+190 val_190
+406 val_406
+401 val_401
+114 val_114
+258 val_258
+90 val_90
+203 val_203
+262 val_262
+348 val_348
+424 val_424
+12 val_12
+396 val_396
+201 val_201
+217 val_217
+164 val_164
+431 val_431
+454 val_454
+478 val_478
+298 val_298
+125 val_125
+431 val_431
+164 val_164
+424 val_424
+187 val_187
+382 val_382
+5 val_5
+70 val_70
+397 val_397
+480 val_480
+291 val_291
+24 val_24
+351 val_351
+255 val_255
+104 val_104
+70 val_70
+163 val_163
+438 val_438
+119 val_119
+414 val_414
+200 val_200
+491 val_491
+237 val_237
+439 val_439
+360 val_360
+248 val_248
+479 val_479
+305 val_305
+417 val_417
+199 val_199
+444 val_444
+120 val_120
+429 val_429
+169 val_169
+443 val_443
+323 val_323
+325 val_325
+277 val_277
+230 val_230
+478 val_478
+178 val_178
+468 val_468
+310 val_310
+317 val_317
+333 val_333
+493 val_493
+460 val_460
+207 val_207
+249 val_249
+265 val_265
+480 val_480
+83 val_83
+136 val_136
+353 val_353
+172 val_172
+214 val_214
+462 val_462
+233 val_233
+406 val_406
+133 val_133
+175 val_175
+189 val_189
+454 val_454
+375 val_375
+401 val_401
+421 val_421
+407 val_407
+384 val_384
+256 val_256
+26 val_26
+134 val_134
+67 val_67
+384 val_384
+379 val_379
+18 val_18
+462 val_462
+492 val_492
+100 val_100
+298 val_298
+9 val_9
+341 val_341
+498 val_498
+146 val_146
+458 val_458
+362 val_362
+186 val_186
+285 val_285
+348 val_348
+167 val_167
+18 val_18
+273 val_273
+183 val_183
+281 val_281
+344 val_344
+97 val_97
+469 val_469
+315 val_315
+84 val_84
+28 val_28
+37 val_37
+448 val_448
+152 val_152
+348 val_348
+307 val_307
+194 val_194
+414 val_414
+477 val_477
+222 val_222
+126 val_126
+90 val_90
+169 val_169
+403 val_403
+400 val_400
+200 val_200
+97 val_97
diff --git a/sql/hive/src/test/resources/golden/view-21-4fa118ed540dfe42748bbed1e7fb513d b/sql/hive/src/test/resources/golden/view-21-4fa118ed540dfe42748bbed1e7fb513d
new file mode 100644
index 0000000000..68782c7a27
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-21-4fa118ed540dfe42748bbed1e7fb513d
@@ -0,0 +1,1028 @@
+238 val_238 238
+238 val_238 238
+86 val_86 86
+311 val_311 311
+311 val_311 311
+311 val_311 311
+27 val_27 27
+165 val_165 165
+165 val_165 165
+409 val_409 409
+409 val_409 409
+409 val_409 409
+255 val_255 255
+255 val_255 255
+278 val_278 278
+278 val_278 278
+98 val_98 98
+98 val_98 98
+484 val_484 484
+265 val_265 265
+265 val_265 265
+193 val_193 193
+193 val_193 193
+193 val_193 193
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+150 val_150 150
+273 val_273 273
+273 val_273 273
+273 val_273 273
+224 val_224 224
+224 val_224 224
+369 val_369 369
+369 val_369 369
+369 val_369 369
+66 val_66 66
+128 val_128 128
+128 val_128 128
+128 val_128 128
+213 val_213 213
+213 val_213 213
+146 val_146 146
+146 val_146 146
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+429 val_429 429
+429 val_429 429
+374 val_374 374
+152 val_152 152
+152 val_152 152
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+145 val_145 145
+495 val_495 495
+37 val_37 37
+37 val_37 37
+327 val_327 327
+327 val_327 327
+327 val_327 327
+281 val_281 281
+281 val_281 281
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+209 val_209 209
+209 val_209 209
+15 val_15 15
+15 val_15 15
+82 val_82 82
+403 val_403 403
+403 val_403 403
+403 val_403 403
+166 val_166 166
+417 val_417 417
+417 val_417 417
+417 val_417 417
+430 val_430 430
+430 val_430 430
+430 val_430 430
+252 val_252 252
+292 val_292 292
+219 val_219 219
+219 val_219 219
+287 val_287 287
+153 val_153 153
+193 val_193 193
+193 val_193 193
+193 val_193 193
+338 val_338 338
+446 val_446 446
+459 val_459 459
+459 val_459 459
+394 val_394 394
+237 val_237 237
+237 val_237 237
+482 val_482 482
+174 val_174 174
+174 val_174 174
+413 val_413 413
+413 val_413 413
+494 val_494 494
+207 val_207 207
+207 val_207 207
+199 val_199 199
+199 val_199 199
+199 val_199 199
+466 val_466 466
+466 val_466 466
+466 val_466 466
+208 val_208 208
+208 val_208 208
+208 val_208 208
+174 val_174 174
+174 val_174 174
+399 val_399 399
+399 val_399 399
+396 val_396 396
+396 val_396 396
+396 val_396 396
+247 val_247 247
+417 val_417 417
+417 val_417 417
+417 val_417 417
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+162 val_162 162
+377 val_377 377
+397 val_397 397
+397 val_397 397
+309 val_309 309
+309 val_309 309
+365 val_365 365
+266 val_266 266
+439 val_439 439
+439 val_439 439
+342 val_342 342
+342 val_342 342
+367 val_367 367
+367 val_367 367
+325 val_325 325
+325 val_325 325
+167 val_167 167
+167 val_167 167
+167 val_167 167
+195 val_195 195
+195 val_195 195
+475 val_475 475
+17 val_17 17
+113 val_113 113
+113 val_113 113
+155 val_155 155
+203 val_203 203
+203 val_203 203
+339 val_339 339
+0 val_0 0
+0 val_0 0
+0 val_0 0
+455 val_455 455
+128 val_128 128
+128 val_128 128
+128 val_128 128
+311 val_311 311
+311 val_311 311
+311 val_311 311
+316 val_316 316
+316 val_316 316
+316 val_316 316
+57 val_57 57
+302 val_302 302
+205 val_205 205
+205 val_205 205
+149 val_149 149
+149 val_149 149
+438 val_438 438
+438 val_438 438
+438 val_438 438
+345 val_345 345
+129 val_129 129
+129 val_129 129
+170 val_170 170
+20 val_20 20
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+157 val_157 157
+378 val_378 378
+221 val_221 221
+221 val_221 221
+92 val_92 92
+111 val_111 111
+47 val_47 47
+72 val_72 72
+72 val_72 72
+4 val_4 4
+280 val_280 280
+280 val_280 280
+35 val_35 35
+35 val_35 35
+35 val_35 35
+427 val_427 427
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+208 val_208 208
+208 val_208 208
+208 val_208 208
+356 val_356 356
+399 val_399 399
+399 val_399 399
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+382 val_382 382
+382 val_382 382
+498 val_498 498
+498 val_498 498
+498 val_498 498
+125 val_125 125
+125 val_125 125
+386 val_386 386
+437 val_437 437
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+192 val_192 192
+286 val_286 286
+187 val_187 187
+187 val_187 187
+187 val_187 187
+176 val_176 176
+176 val_176 176
+54 val_54 54
+459 val_459 459
+459 val_459 459
+51 val_51 51
+51 val_51 51
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+103 val_103 103
+103 val_103 103
+239 val_239 239
+239 val_239 239
+213 val_213 213
+213 val_213 213
+216 val_216 216
+216 val_216 216
+430 val_430 430
+430 val_430 430
+430 val_430 430
+278 val_278 278
+278 val_278 278
+176 val_176 176
+176 val_176 176
+289 val_289 289
+221 val_221 221
+221 val_221 221
+65 val_65 65
+318 val_318 318
+318 val_318 318
+318 val_318 318
+332 val_332 332
+311 val_311 311
+311 val_311 311
+311 val_311 311
+275 val_275 275
+137 val_137 137
+137 val_137 137
+241 val_241 241
+83 val_83 83
+83 val_83 83
+333 val_333 333
+333 val_333 333
+180 val_180 180
+284 val_284 284
+12 val_12 12
+12 val_12 12
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+181 val_181 181
+67 val_67 67
+67 val_67 67
+260 val_260 260
+404 val_404 404
+404 val_404 404
+384 val_384 384
+384 val_384 384
+384 val_384 384
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+353 val_353 353
+353 val_353 353
+373 val_373 373
+272 val_272 272
+272 val_272 272
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+217 val_217 217
+217 val_217 217
+84 val_84 84
+84 val_84 84
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+466 val_466 466
+466 val_466 466
+466 val_466 466
+58 val_58 58
+58 val_58 58
+8 val_8 8
+411 val_411 411
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+208 val_208 208
+208 val_208 208
+208 val_208 208
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+24 val_24 24
+24 val_24 24
+463 val_463 463
+463 val_463 463
+431 val_431 431
+431 val_431 431
+431 val_431 431
+179 val_179 179
+179 val_179 179
+172 val_172 172
+172 val_172 172
+42 val_42 42
+42 val_42 42
+129 val_129 129
+129 val_129 129
+158 val_158 158
+119 val_119 119
+119 val_119 119
+119 val_119 119
+496 val_496 496
+0 val_0 0
+0 val_0 0
+0 val_0 0
+322 val_322 322
+322 val_322 322
+197 val_197 197
+197 val_197 197
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+393 val_393 393
+454 val_454 454
+454 val_454 454
+454 val_454 454
+100 val_100 100
+100 val_100 100
+298 val_298 298
+298 val_298 298
+298 val_298 298
+199 val_199 199
+199 val_199 199
+199 val_199 199
+191 val_191 191
+191 val_191 191
+418 val_418 418
+96 val_96 96
+26 val_26 26
+26 val_26 26
+165 val_165 165
+165 val_165 165
+327 val_327 327
+327 val_327 327
+327 val_327 327
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+205 val_205 205
+205 val_205 205
+120 val_120 120
+120 val_120 120
+131 val_131 131
+51 val_51 51
+51 val_51 51
+404 val_404 404
+404 val_404 404
+43 val_43 43
+436 val_436 436
+156 val_156 156
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+308 val_308 308
+95 val_95 95
+95 val_95 95
+196 val_196 196
+288 val_288 288
+288 val_288 288
+481 val_481 481
+457 val_457 457
+98 val_98 98
+98 val_98 98
+282 val_282 282
+282 val_282 282
+197 val_197 197
+197 val_197 197
+187 val_187 187
+187 val_187 187
+187 val_187 187
+318 val_318 318
+318 val_318 318
+318 val_318 318
+318 val_318 318
+318 val_318 318
+318 val_318 318
+409 val_409 409
+409 val_409 409
+409 val_409 409
+470 val_470 470
+137 val_137 137
+137 val_137 137
+369 val_369 369
+369 val_369 369
+369 val_369 369
+316 val_316 316
+316 val_316 316
+316 val_316 316
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+413 val_413 413
+413 val_413 413
+85 val_85 85
+77 val_77 77
+0 val_0 0
+0 val_0 0
+0 val_0 0
+490 val_490 490
+87 val_87 87
+364 val_364 364
+179 val_179 179
+179 val_179 179
+118 val_118 118
+118 val_118 118
+134 val_134 134
+134 val_134 134
+395 val_395 395
+395 val_395 395
+282 val_282 282
+282 val_282 282
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+238 val_238 238
+238 val_238 238
+419 val_419 419
+15 val_15 15
+15 val_15 15
+118 val_118 118
+118 val_118 118
+72 val_72 72
+72 val_72 72
+90 val_90 90
+90 val_90 90
+90 val_90 90
+307 val_307 307
+307 val_307 307
+19 val_19 19
+435 val_435 435
+10 val_10 10
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+273 val_273 273
+273 val_273 273
+273 val_273 273
+306 val_306 306
+224 val_224 224
+224 val_224 224
+309 val_309 309
+309 val_309 309
+389 val_389 389
+327 val_327 327
+327 val_327 327
+327 val_327 327
+242 val_242 242
+242 val_242 242
+369 val_369 369
+369 val_369 369
+369 val_369 369
+392 val_392 392
+272 val_272 272
+272 val_272 272
+331 val_331 331
+331 val_331 331
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+242 val_242 242
+242 val_242 242
+452 val_452 452
+177 val_177 177
+226 val_226 226
+5 val_5 5
+5 val_5 5
+5 val_5 5
+497 val_497 497
+402 val_402 402
+396 val_396 396
+396 val_396 396
+396 val_396 396
+317 val_317 317
+317 val_317 317
+395 val_395 395
+395 val_395 395
+58 val_58 58
+58 val_58 58
+35 val_35 35
+35 val_35 35
+35 val_35 35
+336 val_336 336
+95 val_95 95
+95 val_95 95
+11 val_11 11
+168 val_168 168
+34 val_34 34
+229 val_229 229
+229 val_229 229
+233 val_233 233
+233 val_233 233
+143 val_143 143
+472 val_472 472
+322 val_322 322
+322 val_322 322
+498 val_498 498
+498 val_498 498
+498 val_498 498
+160 val_160 160
+195 val_195 195
+195 val_195 195
+42 val_42 42
+42 val_42 42
+321 val_321 321
+321 val_321 321
+430 val_430 430
+430 val_430 430
+430 val_430 430
+119 val_119 119
+119 val_119 119
+119 val_119 119
+489 val_489 489
+489 val_489 489
+489 val_489 489
+489 val_489 489
+458 val_458 458
+458 val_458 458
+78 val_78 78
+76 val_76 76
+76 val_76 76
+41 val_41 41
+223 val_223 223
+223 val_223 223
+492 val_492 492
+492 val_492 492
+149 val_149 149
+149 val_149 149
+449 val_449 449
+218 val_218 218
+228 val_228 228
+138 val_138 138
+138 val_138 138
+138 val_138 138
+138 val_138 138
+453 val_453 453
+30 val_30 30
+209 val_209 209
+209 val_209 209
+64 val_64 64
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+76 val_76 76
+76 val_76 76
+74 val_74 74
+342 val_342 342
+342 val_342 342
+69 val_69 69
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+33 val_33 33
+368 val_368 368
+103 val_103 103
+103 val_103 103
+296 val_296 296
+113 val_113 113
+113 val_113 113
+216 val_216 216
+216 val_216 216
+367 val_367 367
+367 val_367 367
+344 val_344 344
+344 val_344 344
+167 val_167 167
+167 val_167 167
+167 val_167 167
+274 val_274 274
+219 val_219 219
+219 val_219 219
+239 val_239 239
+239 val_239 239
+485 val_485 485
+116 val_116 116
+223 val_223 223
+223 val_223 223
+256 val_256 256
+256 val_256 256
+263 val_263 263
+70 val_70 70
+70 val_70 70
+70 val_70 70
+487 val_487 487
+480 val_480 480
+480 val_480 480
+480 val_480 480
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+288 val_288 288
+288 val_288 288
+191 val_191 191
+191 val_191 191
+5 val_5 5
+5 val_5 5
+5 val_5 5
+244 val_244 244
+438 val_438 438
+438 val_438 438
+438 val_438 438
+128 val_128 128
+128 val_128 128
+128 val_128 128
+467 val_467 467
+432 val_432 432
+202 val_202 202
+316 val_316 316
+316 val_316 316
+316 val_316 316
+229 val_229 229
+229 val_229 229
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+463 val_463 463
+463 val_463 463
+280 val_280 280
+280 val_280 280
+2 val_2 2
+35 val_35 35
+35 val_35 35
+35 val_35 35
+283 val_283 283
+331 val_331 331
+331 val_331 331
+235 val_235 235
+80 val_80 80
+44 val_44 44
+193 val_193 193
+193 val_193 193
+193 val_193 193
+321 val_321 321
+321 val_321 321
+335 val_335 335
+104 val_104 104
+104 val_104 104
+466 val_466 466
+466 val_466 466
+466 val_466 466
+366 val_366 366
+175 val_175 175
+175 val_175 175
+403 val_403 403
+403 val_403 403
+403 val_403 403
+483 val_483 483
+53 val_53 53
+105 val_105 105
+257 val_257 257
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+409 val_409 409
+409 val_409 409
+409 val_409 409
+190 val_190 190
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+114 val_114 114
+258 val_258 258
+90 val_90 90
+90 val_90 90
+90 val_90 90
+203 val_203 203
+203 val_203 203
+262 val_262 262
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+424 val_424 424
+424 val_424 424
+12 val_12 12
+12 val_12 12
+396 val_396 396
+396 val_396 396
+396 val_396 396
+201 val_201 201
+217 val_217 217
+217 val_217 217
+164 val_164 164
+164 val_164 164
+431 val_431 431
+431 val_431 431
+431 val_431 431
+454 val_454 454
+454 val_454 454
+454 val_454 454
+478 val_478 478
+478 val_478 478
+298 val_298 298
+298 val_298 298
+298 val_298 298
+125 val_125 125
+125 val_125 125
+431 val_431 431
+431 val_431 431
+431 val_431 431
+164 val_164 164
+164 val_164 164
+424 val_424 424
+424 val_424 424
+187 val_187 187
+187 val_187 187
+187 val_187 187
+382 val_382 382
+382 val_382 382
+5 val_5 5
+5 val_5 5
+5 val_5 5
+70 val_70 70
+70 val_70 70
+70 val_70 70
+397 val_397 397
+397 val_397 397
+480 val_480 480
+480 val_480 480
+480 val_480 480
+291 val_291 291
+24 val_24 24
+24 val_24 24
+351 val_351 351
+255 val_255 255
+255 val_255 255
+104 val_104 104
+104 val_104 104
+70 val_70 70
+70 val_70 70
+70 val_70 70
+163 val_163 163
+438 val_438 438
+438 val_438 438
+438 val_438 438
+119 val_119 119
+119 val_119 119
+119 val_119 119
+414 val_414 414
+414 val_414 414
+200 val_200 200
+200 val_200 200
+491 val_491 491
+237 val_237 237
+237 val_237 237
+439 val_439 439
+439 val_439 439
+360 val_360 360
+248 val_248 248
+479 val_479 479
+305 val_305 305
+417 val_417 417
+417 val_417 417
+417 val_417 417
+199 val_199 199
+199 val_199 199
+199 val_199 199
+444 val_444 444
+120 val_120 120
+120 val_120 120
+429 val_429 429
+429 val_429 429
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+443 val_443 443
+323 val_323 323
+325 val_325 325
+325 val_325 325
+277 val_277 277
+277 val_277 277
+277 val_277 277
+277 val_277 277
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+230 val_230 230
+478 val_478 478
+478 val_478 478
+178 val_178 178
+468 val_468 468
+468 val_468 468
+468 val_468 468
+468 val_468 468
+310 val_310 310
+317 val_317 317
+317 val_317 317
+333 val_333 333
+333 val_333 333
+493 val_493 493
+460 val_460 460
+207 val_207 207
+207 val_207 207
+249 val_249 249
+265 val_265 265
+265 val_265 265
+480 val_480 480
+480 val_480 480
+480 val_480 480
+83 val_83 83
+83 val_83 83
+136 val_136 136
+353 val_353 353
+353 val_353 353
+172 val_172 172
+172 val_172 172
+214 val_214 214
+462 val_462 462
+462 val_462 462
+233 val_233 233
+233 val_233 233
+406 val_406 406
+406 val_406 406
+406 val_406 406
+406 val_406 406
+133 val_133 133
+175 val_175 175
+175 val_175 175
+189 val_189 189
+454 val_454 454
+454 val_454 454
+454 val_454 454
+375 val_375 375
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+401 val_401 401
+421 val_421 421
+407 val_407 407
+384 val_384 384
+384 val_384 384
+384 val_384 384
+256 val_256 256
+256 val_256 256
+26 val_26 26
+26 val_26 26
+134 val_134 134
+134 val_134 134
+67 val_67 67
+67 val_67 67
+384 val_384 384
+384 val_384 384
+384 val_384 384
+379 val_379 379
+18 val_18 18
+18 val_18 18
+462 val_462 462
+462 val_462 462
+492 val_492 492
+492 val_492 492
+100 val_100 100
+100 val_100 100
+298 val_298 298
+298 val_298 298
+298 val_298 298
+9 val_9 9
+341 val_341 341
+498 val_498 498
+498 val_498 498
+498 val_498 498
+146 val_146 146
+146 val_146 146
+458 val_458 458
+458 val_458 458
+362 val_362 362
+186 val_186 186
+285 val_285 285
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+167 val_167 167
+167 val_167 167
+167 val_167 167
+18 val_18 18
+18 val_18 18
+273 val_273 273
+273 val_273 273
+273 val_273 273
+183 val_183 183
+281 val_281 281
+281 val_281 281
+344 val_344 344
+344 val_344 344
+97 val_97 97
+97 val_97 97
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+469 val_469 469
+315 val_315 315
+84 val_84 84
+84 val_84 84
+28 val_28 28
+37 val_37 37
+37 val_37 37
+448 val_448 448
+152 val_152 152
+152 val_152 152
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+348 val_348 348
+307 val_307 307
+307 val_307 307
+194 val_194 194
+414 val_414 414
+414 val_414 414
+477 val_477 477
+222 val_222 222
+126 val_126 126
+90 val_90 90
+90 val_90 90
+90 val_90 90
+169 val_169 169
+169 val_169 169
+169 val_169 169
+169 val_169 169
+403 val_403 403
+403 val_403 403
+403 val_403 403
+400 val_400 400
+200 val_200 200
+200 val_200 200
+97 val_97 97
+97 val_97 97
diff --git a/sql/hive/src/test/resources/golden/view-22-f83b15c828d4ec599d7827af8b25f578 b/sql/hive/src/test/resources/golden/view-22-f83b15c828d4ec599d7827af8b25f578
new file mode 100644
index 0000000000..e34118512c
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-22-f83b15c828d4ec599d7827af8b25f578
@@ -0,0 +1,500 @@
+238
+86
+311
+27
+165
+409
+255
+278
+98
+484
+265
+193
+401
+150
+273
+224
+369
+66
+128
+213
+146
+406
+429
+374
+152
+469
+145
+495
+37
+327
+281
+277
+209
+15
+82
+403
+166
+417
+430
+252
+292
+219
+287
+153
+193
+338
+446
+459
+394
+237
+482
+174
+413
+494
+207
+199
+466
+208
+174
+399
+396
+247
+417
+489
+162
+377
+397
+309
+365
+266
+439
+342
+367
+325
+167
+195
+475
+17
+113
+155
+203
+339
+0
+455
+128
+311
+316
+57
+302
+205
+149
+438
+345
+129
+170
+20
+489
+157
+378
+221
+92
+111
+47
+72
+4
+280
+35
+427
+277
+208
+356
+399
+169
+382
+498
+125
+386
+437
+469
+192
+286
+187
+176
+54
+459
+51
+138
+103
+239
+213
+216
+430
+278
+176
+289
+221
+65
+318
+332
+311
+275
+137
+241
+83
+333
+180
+284
+12
+230
+181
+67
+260
+404
+384
+489
+353
+373
+272
+138
+217
+84
+348
+466
+58
+8
+411
+230
+208
+348
+24
+463
+431
+179
+172
+42
+129
+158
+119
+496
+0
+322
+197
+468
+393
+454
+100
+298
+199
+191
+418
+96
+26
+165
+327
+230
+205
+120
+131
+51
+404
+43
+436
+156
+469
+468
+308
+95
+196
+288
+481
+457
+98
+282
+197
+187
+318
+318
+409
+470
+137
+369
+316
+169
+413
+85
+77
+0
+490
+87
+364
+179
+118
+134
+395
+282
+138
+238
+419
+15
+118
+72
+90
+307
+19
+435
+10
+277
+273
+306
+224
+309
+389
+327
+242
+369
+392
+272
+331
+401
+242
+452
+177
+226
+5
+497
+402
+396
+317
+395
+58
+35
+336
+95
+11
+168
+34
+229
+233
+143
+472
+322
+498
+160
+195
+42
+321
+430
+119
+489
+458
+78
+76
+41
+223
+492
+149
+449
+218
+228
+138
+453
+30
+209
+64
+468
+76
+74
+342
+69
+230
+33
+368
+103
+296
+113
+216
+367
+344
+167
+274
+219
+239
+485
+116
+223
+256
+263
+70
+487
+480
+401
+288
+191
+5
+244
+438
+128
+467
+432
+202
+316
+229
+469
+463
+280
+2
+35
+283
+331
+235
+80
+44
+193
+321
+335
+104
+466
+366
+175
+403
+483
+53
+105
+257
+406
+409
+190
+406
+401
+114
+258
+90
+203
+262
+348
+424
+12
+396
+201
+217
+164
+431
+454
+478
+298
+125
+431
+164
+424
+187
+382
+5
+70
+397
+480
+291
+24
+351
+255
+104
+70
+163
+438
+119
+414
+200
+491
+237
+439
+360
+248
+479
+305
+417
+199
+444
+120
+429
+169
+443
+323
+325
+277
+230
+478
+178
+468
+310
+317
+333
+493
+460
+207
+249
+265
+480
+83
+136
+353
+172
+214
+462
+233
+406
+133
+175
+189
+454
+375
+401
+421
+407
+384
+256
+26
+134
+67
+384
+379
+18
+462
+492
+100
+298
+9
+341
+498
+146
+458
+362
+186
+285
+348
+167
+18
+273
+183
+281
+344
+97
+469
+315
+84
+28
+37
+448
+152
+348
+307
+194
+414
+477
+222
+126
+90
+169
+403
+400
+200
+97
diff --git a/sql/hive/src/test/resources/golden/view-23-f6a52dd2ff5b11ea3bba2feb867f00c2 b/sql/hive/src/test/resources/golden/view-23-f6a52dd2ff5b11ea3bba2feb867f00c2
new file mode 100644
index 0000000000..e34118512c
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-23-f6a52dd2ff5b11ea3bba2feb867f00c2
@@ -0,0 +1,500 @@
+238
+86
+311
+27
+165
+409
+255
+278
+98
+484
+265
+193
+401
+150
+273
+224
+369
+66
+128
+213
+146
+406
+429
+374
+152
+469
+145
+495
+37
+327
+281
+277
+209
+15
+82
+403
+166
+417
+430
+252
+292
+219
+287
+153
+193
+338
+446
+459
+394
+237
+482
+174
+413
+494
+207
+199
+466
+208
+174
+399
+396
+247
+417
+489
+162
+377
+397
+309
+365
+266
+439
+342
+367
+325
+167
+195
+475
+17
+113
+155
+203
+339
+0
+455
+128
+311
+316
+57
+302
+205
+149
+438
+345
+129
+170
+20
+489
+157
+378
+221
+92
+111
+47
+72
+4
+280
+35
+427
+277
+208
+356
+399
+169
+382
+498
+125
+386
+437
+469
+192
+286
+187
+176
+54
+459
+51
+138
+103
+239
+213
+216
+430
+278
+176
+289
+221
+65
+318
+332
+311
+275
+137
+241
+83
+333
+180
+284
+12
+230
+181
+67
+260
+404
+384
+489
+353
+373
+272
+138
+217
+84
+348
+466
+58
+8
+411
+230
+208
+348
+24
+463
+431
+179
+172
+42
+129
+158
+119
+496
+0
+322
+197
+468
+393
+454
+100
+298
+199
+191
+418
+96
+26
+165
+327
+230
+205
+120
+131
+51
+404
+43
+436
+156
+469
+468
+308
+95
+196
+288
+481
+457
+98
+282
+197
+187
+318
+318
+409
+470
+137
+369
+316
+169
+413
+85
+77
+0
+490
+87
+364
+179
+118
+134
+395
+282
+138
+238
+419
+15
+118
+72
+90
+307
+19
+435
+10
+277
+273
+306
+224
+309
+389
+327
+242
+369
+392
+272
+331
+401
+242
+452
+177
+226
+5
+497
+402
+396
+317
+395
+58
+35
+336
+95
+11
+168
+34
+229
+233
+143
+472
+322
+498
+160
+195
+42
+321
+430
+119
+489
+458
+78
+76
+41
+223
+492
+149
+449
+218
+228
+138
+453
+30
+209
+64
+468
+76
+74
+342
+69
+230
+33
+368
+103
+296
+113
+216
+367
+344
+167
+274
+219
+239
+485
+116
+223
+256
+263
+70
+487
+480
+401
+288
+191
+5
+244
+438
+128
+467
+432
+202
+316
+229
+469
+463
+280
+2
+35
+283
+331
+235
+80
+44
+193
+321
+335
+104
+466
+366
+175
+403
+483
+53
+105
+257
+406
+409
+190
+406
+401
+114
+258
+90
+203
+262
+348
+424
+12
+396
+201
+217
+164
+431
+454
+478
+298
+125
+431
+164
+424
+187
+382
+5
+70
+397
+480
+291
+24
+351
+255
+104
+70
+163
+438
+119
+414
+200
+491
+237
+439
+360
+248
+479
+305
+417
+199
+444
+120
+429
+169
+443
+323
+325
+277
+230
+478
+178
+468
+310
+317
+333
+493
+460
+207
+249
+265
+480
+83
+136
+353
+172
+214
+462
+233
+406
+133
+175
+189
+454
+375
+401
+421
+407
+384
+256
+26
+134
+67
+384
+379
+18
+462
+492
+100
+298
+9
+341
+498
+146
+458
+362
+186
+285
+348
+167
+18
+273
+183
+281
+344
+97
+469
+315
+84
+28
+37
+448
+152
+348
+307
+194
+414
+477
+222
+126
+90
+169
+403
+400
+200
+97
diff --git a/sql/hive/src/test/resources/golden/view-3-e7dd3b24daa60d8955b22f0441f01a6a b/sql/hive/src/test/resources/golden/view-3-e7dd3b24daa60d8955b22f0441f01a6a
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-3-e7dd3b24daa60d8955b22f0441f01a6a
diff --git a/sql/hive/src/test/resources/golden/view-4-4a64d1a623ca71e515796787dbd0f904 b/sql/hive/src/test/resources/golden/view-4-4a64d1a623ca71e515796787dbd0f904
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-4-4a64d1a623ca71e515796787dbd0f904
diff --git a/sql/hive/src/test/resources/golden/view-5-7abee38ed087f13f03ac216ef0decf4c b/sql/hive/src/test/resources/golden/view-5-7abee38ed087f13f03ac216ef0decf4c
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-5-7abee38ed087f13f03ac216ef0decf4c
diff --git a/sql/hive/src/test/resources/golden/view-6-47b5043f03a84695b6784682b4402ac8 b/sql/hive/src/test/resources/golden/view-6-47b5043f03a84695b6784682b4402ac8
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-6-47b5043f03a84695b6784682b4402ac8
diff --git a/sql/hive/src/test/resources/golden/view-7-8b1bbdadfd1e11af1b56064196164e58 b/sql/hive/src/test/resources/golden/view-7-8b1bbdadfd1e11af1b56064196164e58
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-7-8b1bbdadfd1e11af1b56064196164e58
diff --git a/sql/hive/src/test/resources/golden/view-8-60d2f3ee552ae7021f9fa72f0dcf2867 b/sql/hive/src/test/resources/golden/view-8-60d2f3ee552ae7021f9fa72f0dcf2867
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-8-60d2f3ee552ae7021f9fa72f0dcf2867
diff --git a/sql/hive/src/test/resources/golden/view-9-66c68babac10ae0f645fe8334c5a42d4 b/sql/hive/src/test/resources/golden/view-9-66c68babac10ae0f645fe8334c5a42d4
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view-9-66c68babac10ae0f645fe8334c5a42d4
diff --git a/sql/hive/src/test/resources/golden/view_cast-0-89bd46ad04f967f1f5ee17c6f201aacf b/sql/hive/src/test/resources/golden/view_cast-0-89bd46ad04f967f1f5ee17c6f201aacf
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-0-89bd46ad04f967f1f5ee17c6f201aacf
diff --git a/sql/hive/src/test/resources/golden/view_cast-1-85685a26971fb51ab6e28f9c5e8421bb b/sql/hive/src/test/resources/golden/view_cast-1-85685a26971fb51ab6e28f9c5e8421bb
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-1-85685a26971fb51ab6e28f9c5e8421bb
diff --git a/sql/hive/src/test/resources/golden/view_cast-10-a7c865e5180df8d73dba90ede8be0d45 b/sql/hive/src/test/resources/golden/view_cast-10-a7c865e5180df8d73dba90ede8be0d45
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-10-a7c865e5180df8d73dba90ede8be0d45
diff --git a/sql/hive/src/test/resources/golden/view_cast-11-b809f5d793b072146ccf577abf286003 b/sql/hive/src/test/resources/golden/view_cast-11-b809f5d793b072146ccf577abf286003
new file mode 100644
index 0000000000..da7e68de78
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-11-b809f5d793b072146ccf577abf286003
@@ -0,0 +1,8 @@
+1111 abc fun bar NULL 2222 NULL 99999.0 99999.0
+1111 abc fun bar NULL 2222 NULL 99999.0 99999.0
+2222 abc fun bar NULL 4444 NULL 99999.0 99999.0
+2222 abc fun bar NULL 4444 NULL 99999.0 99999.0
+3333 abc fun bar NULL 6666 NULL 99999.0 10.0
+3333 abc fun bar NULL 6666 NULL 99999.0 10.0
+3333 abc fun bar NULL 6666 NULL 99999.0 10.0
+4444 abc fun bar NULL 8888 NULL 99999.0 99999.0
diff --git a/sql/hive/src/test/resources/golden/view_cast-2-635031c0752d5b30c44dfb3dec759a6c b/sql/hive/src/test/resources/golden/view_cast-2-635031c0752d5b30c44dfb3dec759a6c
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-2-635031c0752d5b30c44dfb3dec759a6c
diff --git a/sql/hive/src/test/resources/golden/view_cast-3-9f675e7edd64a33713e91282dc201867 b/sql/hive/src/test/resources/golden/view_cast-3-9f675e7edd64a33713e91282dc201867
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-3-9f675e7edd64a33713e91282dc201867
diff --git a/sql/hive/src/test/resources/golden/view_cast-4-d9edb83f4cf847e141d97012314917d4 b/sql/hive/src/test/resources/golden/view_cast-4-d9edb83f4cf847e141d97012314917d4
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-4-d9edb83f4cf847e141d97012314917d4
diff --git a/sql/hive/src/test/resources/golden/view_cast-5-6db508ccd85562a9ca7841fb0a08981a b/sql/hive/src/test/resources/golden/view_cast-5-6db508ccd85562a9ca7841fb0a08981a
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-5-6db508ccd85562a9ca7841fb0a08981a
diff --git a/sql/hive/src/test/resources/golden/view_cast-6-b18da53e46b62d6d91efac88ba62f308 b/sql/hive/src/test/resources/golden/view_cast-6-b18da53e46b62d6d91efac88ba62f308
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-6-b18da53e46b62d6d91efac88ba62f308
diff --git a/sql/hive/src/test/resources/golden/view_cast-7-78ac3800b22682b31708b6a09b402bfb b/sql/hive/src/test/resources/golden/view_cast-7-78ac3800b22682b31708b6a09b402bfb
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-7-78ac3800b22682b31708b6a09b402bfb
diff --git a/sql/hive/src/test/resources/golden/view_cast-8-2cc0c576f0a008abf5bdf3308d500869 b/sql/hive/src/test/resources/golden/view_cast-8-2cc0c576f0a008abf5bdf3308d500869
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-8-2cc0c576f0a008abf5bdf3308d500869
diff --git a/sql/hive/src/test/resources/golden/view_cast-9-f306bf3ad1c2a99f6f1843db44d7dfb4 b/sql/hive/src/test/resources/golden/view_cast-9-f306bf3ad1c2a99f6f1843db44d7dfb4
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_cast-9-f306bf3ad1c2a99f6f1843db44d7dfb4
diff --git a/sql/hive/src/test/resources/golden/view_inputs-0-9e67dfd1d595ab8b1935b789645f76c0 b/sql/hive/src/test/resources/golden/view_inputs-0-9e67dfd1d595ab8b1935b789645f76c0
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_inputs-0-9e67dfd1d595ab8b1935b789645f76c0
diff --git a/sql/hive/src/test/resources/golden/view_inputs-1-5af97e73bc3841793440105aae766bbe b/sql/hive/src/test/resources/golden/view_inputs-1-5af97e73bc3841793440105aae766bbe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_inputs-1-5af97e73bc3841793440105aae766bbe
diff --git a/sql/hive/src/test/resources/golden/view_inputs-2-626fa3664754125edc44b7ca7f8630db b/sql/hive/src/test/resources/golden/view_inputs-2-626fa3664754125edc44b7ca7f8630db
new file mode 100644
index 0000000000..1f3d8a7a1f
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/view_inputs-2-626fa3664754125edc44b7ca7f8630db
@@ -0,0 +1 @@
+1028