You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/06/05 19:33:28 UTC

(datafusion) branch gh-readonly-queue/main/pr-22680-11caa4c1bb498eb5a766dd3a14c5bc54a14d48b5 created (now 5073db19cf)

This is an automated email from the ASF dual-hosted git repository.

github-merge-queue[bot] pushed a change to branch gh-readonly-queue/main/pr-22680-11caa4c1bb498eb5a766dd3a14c5bc54a14d48b5
in repository https://gitbox.apache.org/repos/asf/datafusion.git


      at 5073db19cf Add imdb SQL benchmark (#22680)

This branch includes the following new commits:

     new 5073db19cf Add imdb SQL benchmark (#22680)

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org


(datafusion) 01/01: Add imdb SQL benchmark (#22680)

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-22680-11caa4c1bb498eb5a766dd3a14c5bc54a14d48b5
in repository https://gitbox.apache.org/repos/asf/datafusion.git

commit 5073db19cfb7bfd21cb1a5e6493f115410df3092
Author: Bruce Ritchie <br...@gmail.com>
AuthorDate: Fri Jun 5 15:27:05 2026 -0400

    Add imdb SQL benchmark (#22680)
    
    ## Which issue does this PR close?
    
    Part of #21706
    
    ## Rationale for this change
    
    Continue work on sql benchmark migration.
    
    ## What changes are included in this PR?
    
    Imdb sql benchmark.
    
    ## Are these changes tested?
    
    Yes
    
    `BENCH_NAME=imdb IMDB_FILE_TYPE=csv cargo bench --bench sql`
    `BENCH_NAME=imdb IMDB_FILE_TYPE=parquet cargo bench --bench sql`
    
    Note that the IMDB_FILE_TYPE=csv will OOM on most systems because csv
    doesn't infer statistics and thus won't get scan predicates and dynamic
    filters pushed into DataSourceExec. This results in queries such a 16a
    doing joining large tables/intermediates before enough of the selective
    filters have reduced the data size to not OOM (tested on a 96GB system).
    Setting PARTITION=1 does not solve the issue.
    
    ## Are there any user-facing changes?
    
    no
---
 benchmarks/benches/sql.rs                          |  13 +-
 .../sql_benchmarks/imdb/benchmarks/01a.benchmark   |  35 +++++
 .../sql_benchmarks/imdb/benchmarks/01b.benchmark   |  34 +++++
 .../sql_benchmarks/imdb/benchmarks/01c.benchmark   |  35 +++++
 .../sql_benchmarks/imdb/benchmarks/01d.benchmark   |  34 +++++
 .../sql_benchmarks/imdb/benchmarks/02a.benchmark   |  30 ++++
 .../sql_benchmarks/imdb/benchmarks/02b.benchmark   |  30 ++++
 .../sql_benchmarks/imdb/benchmarks/02c.benchmark   |  30 ++++
 .../sql_benchmarks/imdb/benchmarks/02d.benchmark   |  30 ++++
 .../sql_benchmarks/imdb/benchmarks/03a.benchmark   |  36 +++++
 .../sql_benchmarks/imdb/benchmarks/03b.benchmark   |  29 ++++
 .../sql_benchmarks/imdb/benchmarks/03c.benchmark   |  38 +++++
 .../sql_benchmarks/imdb/benchmarks/04a.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/04b.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/04c.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/05a.benchmark   |  40 +++++
 .../sql_benchmarks/imdb/benchmarks/05b.benchmark   |  35 +++++
 .../sql_benchmarks/imdb/benchmarks/05c.benchmark   |  42 +++++
 .../sql_benchmarks/imdb/benchmarks/06a.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/06b.benchmark   |  40 +++++
 .../sql_benchmarks/imdb/benchmarks/06c.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/06d.benchmark   |  40 +++++
 .../sql_benchmarks/imdb/benchmarks/06e.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/06f.benchmark   |  39 +++++
 .../sql_benchmarks/imdb/benchmarks/07a.benchmark   |  47 ++++++
 .../sql_benchmarks/imdb/benchmarks/07b.benchmark   |  45 ++++++
 .../sql_benchmarks/imdb/benchmarks/07c.benchmark   |  52 +++++++
 .../sql_benchmarks/imdb/benchmarks/08a.benchmark   |  41 +++++
 .../sql_benchmarks/imdb/benchmarks/08b.benchmark   |  46 ++++++
 .../sql_benchmarks/imdb/benchmarks/08c.benchmark   |  36 +++++
 .../sql_benchmarks/imdb/benchmarks/08d.benchmark   |  36 +++++
 .../sql_benchmarks/imdb/benchmarks/09a.benchmark   |  49 ++++++
 .../sql_benchmarks/imdb/benchmarks/09b.benchmark   |  47 ++++++
 .../sql_benchmarks/imdb/benchmarks/09c.benchmark   |  46 ++++++
 .../sql_benchmarks/imdb/benchmarks/09d.benchmark   |  45 ++++++
 .../sql_benchmarks/imdb/benchmarks/10a.benchmark   |  38 +++++
 .../sql_benchmarks/imdb/benchmarks/10b.benchmark   |  37 +++++
 .../sql_benchmarks/imdb/benchmarks/10c.benchmark   |  36 +++++
 .../sql_benchmarks/imdb/benchmarks/11a.benchmark   |  46 ++++++
 .../sql_benchmarks/imdb/benchmarks/11b.benchmark   |  47 ++++++
 .../sql_benchmarks/imdb/benchmarks/11c.benchmark   |  48 ++++++
 .../sql_benchmarks/imdb/benchmarks/11d.benchmark   |  46 ++++++
 .../sql_benchmarks/imdb/benchmarks/12a.benchmark   |  46 ++++++
 .../sql_benchmarks/imdb/benchmarks/12b.benchmark   |  46 ++++++
 .../sql_benchmarks/imdb/benchmarks/12c.benchmark   |  48 ++++++
 .../sql_benchmarks/imdb/benchmarks/13a.benchmark   |  45 ++++++
 .../sql_benchmarks/imdb/benchmarks/13b.benchmark   |  48 ++++++
 .../sql_benchmarks/imdb/benchmarks/13c.benchmark   |  48 ++++++
 .../sql_benchmarks/imdb/benchmarks/13d.benchmark   |  45 ++++++
 .../sql_benchmarks/imdb/benchmarks/14a.benchmark   |  56 +++++++
 .../sql_benchmarks/imdb/benchmarks/14b.benchmark   |  57 +++++++
 .../sql_benchmarks/imdb/benchmarks/14c.benchmark   |  58 +++++++
 .../sql_benchmarks/imdb/benchmarks/15a.benchmark   |  49 ++++++
 .../sql_benchmarks/imdb/benchmarks/15b.benchmark   |  50 ++++++
 .../sql_benchmarks/imdb/benchmarks/15c.benchmark   |  49 ++++++
 .../sql_benchmarks/imdb/benchmarks/15d.benchmark   |  46 ++++++
 .../sql_benchmarks/imdb/benchmarks/16a.benchmark   |  42 +++++
 .../sql_benchmarks/imdb/benchmarks/16b.benchmark   |  40 +++++
 .../sql_benchmarks/imdb/benchmarks/16c.benchmark   |  41 +++++
 .../sql_benchmarks/imdb/benchmarks/16d.benchmark   |  42 +++++
 .../sql_benchmarks/imdb/benchmarks/17a.benchmark   |  38 +++++
 .../sql_benchmarks/imdb/benchmarks/17b.benchmark   |  37 +++++
 .../sql_benchmarks/imdb/benchmarks/17c.benchmark   |  37 +++++
 .../sql_benchmarks/imdb/benchmarks/17d.benchmark   |  36 +++++
 .../sql_benchmarks/imdb/benchmarks/17e.benchmark   |  36 +++++
 .../sql_benchmarks/imdb/benchmarks/17f.benchmark   |  36 +++++
 .../sql_benchmarks/imdb/benchmarks/18a.benchmark   |  42 +++++
 .../sql_benchmarks/imdb/benchmarks/18b.benchmark   |  50 ++++++
 .../sql_benchmarks/imdb/benchmarks/18c.benchmark   |  50 ++++++
 .../sql_benchmarks/imdb/benchmarks/19a.benchmark   |  58 +++++++
 .../sql_benchmarks/imdb/benchmarks/19b.benchmark   |  56 +++++++
 .../sql_benchmarks/imdb/benchmarks/19c.benchmark   |  55 +++++++
 .../sql_benchmarks/imdb/benchmarks/19d.benchmark   |  51 +++++++
 .../sql_benchmarks/imdb/benchmarks/20a.benchmark   |  55 +++++++
 .../sql_benchmarks/imdb/benchmarks/20b.benchmark   |  56 +++++++
 .../sql_benchmarks/imdb/benchmarks/20c.benchmark   |  58 +++++++
 .../sql_benchmarks/imdb/benchmarks/21a.benchmark   |  59 +++++++
 .../sql_benchmarks/imdb/benchmarks/21b.benchmark   |  53 +++++++
 .../sql_benchmarks/imdb/benchmarks/21c.benchmark   |  60 ++++++++
 .../sql_benchmarks/imdb/benchmarks/22a.benchmark   |  64 ++++++++
 .../sql_benchmarks/imdb/benchmarks/22b.benchmark   |  64 ++++++++
 .../sql_benchmarks/imdb/benchmarks/22c.benchmark   |  70 +++++++++
 .../sql_benchmarks/imdb/benchmarks/22d.benchmark   |  68 +++++++++
 .../sql_benchmarks/imdb/benchmarks/23a.benchmark   |  55 +++++++
 .../sql_benchmarks/imdb/benchmarks/23b.benchmark   |  57 +++++++
 .../sql_benchmarks/imdb/benchmarks/23c.benchmark   |  58 +++++++
 .../sql_benchmarks/imdb/benchmarks/24a.benchmark   |  66 ++++++++
 .../sql_benchmarks/imdb/benchmarks/24b.benchmark   |  69 +++++++++
 .../sql_benchmarks/imdb/benchmarks/25a.benchmark   |  58 +++++++
 .../sql_benchmarks/imdb/benchmarks/25b.benchmark   |  60 ++++++++
 .../sql_benchmarks/imdb/benchmarks/25c.benchmark   |  65 ++++++++
 .../sql_benchmarks/imdb/benchmarks/26a.benchmark   |  69 +++++++++
 .../sql_benchmarks/imdb/benchmarks/26b.benchmark   |  62 ++++++++
 .../sql_benchmarks/imdb/benchmarks/26c.benchmark   |  67 ++++++++
 .../sql_benchmarks/imdb/benchmarks/27a.benchmark   |  68 +++++++++
 .../sql_benchmarks/imdb/benchmarks/27b.benchmark   |  68 +++++++++
 .../sql_benchmarks/imdb/benchmarks/27c.benchmark   |  72 +++++++++
 .../sql_benchmarks/imdb/benchmarks/28a.benchmark   |  82 ++++++++++
 .../sql_benchmarks/imdb/benchmarks/28b.benchmark   |  76 +++++++++
 .../sql_benchmarks/imdb/benchmarks/28c.benchmark   |  82 ++++++++++
 .../sql_benchmarks/imdb/benchmarks/29a.benchmark   |  83 ++++++++++
 .../sql_benchmarks/imdb/benchmarks/29b.benchmark   |  81 ++++++++++
 .../sql_benchmarks/imdb/benchmarks/29c.benchmark   |  82 ++++++++++
 .../sql_benchmarks/imdb/benchmarks/30a.benchmark   |  75 +++++++++
 .../sql_benchmarks/imdb/benchmarks/30b.benchmark   |  78 ++++++++++
 .../sql_benchmarks/imdb/benchmarks/30c.benchmark   |  77 ++++++++++
 .../sql_benchmarks/imdb/benchmarks/31a.benchmark   |  70 +++++++++
 .../sql_benchmarks/imdb/benchmarks/31b.benchmark   |  75 +++++++++
 .../sql_benchmarks/imdb/benchmarks/31c.benchmark   |  73 +++++++++
 .../sql_benchmarks/imdb/benchmarks/32a.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/32b.benchmark   |  33 ++++
 .../sql_benchmarks/imdb/benchmarks/33a.benchmark   |  66 ++++++++
 .../sql_benchmarks/imdb/benchmarks/33b.benchmark   |  64 ++++++++
 .../sql_benchmarks/imdb/benchmarks/33c.benchmark   |  68 +++++++++
 benchmarks/sql_benchmarks/imdb/init/cleanup.sql    |  41 +++++
 benchmarks/sql_benchmarks/imdb/init/load_csv.sql   | 170 +++++++++++++++++++++
 .../sql_benchmarks/imdb/init/load_parquet.sql      | 170 +++++++++++++++++++++
 117 files changed, 6110 insertions(+), 4 deletions(-)

diff --git a/benchmarks/benches/sql.rs b/benchmarks/benches/sql.rs
index 73302b4763..c70b4ffb56 100644
--- a/benchmarks/benches/sql.rs
+++ b/benchmarks/benches/sql.rs
@@ -82,7 +82,7 @@ struct EnvParser {
     subgroup: Option<String>,
 
     #[arg(env = "BENCH_QUERY")]
-    query: Option<i32>,
+    query: Option<String>,
 }
 
 pub fn sql(c: &mut Criterion) {
@@ -306,9 +306,14 @@ fn filter_benchmarks(
                 if let Some(subgroup) = &args.subgroup {
                     val.retain(|bench| bench.subgroup().eq_ignore_ascii_case(subgroup));
                 }
-                if let Some(query_number) = &args.query {
-                    let padded = format!("Q{query_number:0>2}");
-                    val.retain(|bench| bench.name().eq_ignore_ascii_case(&padded));
+                if let Some(query) = &args.query {
+                    // Accept `1`, `01`, `6a`, `Q06a`, ... case-insensitively.
+                    // Bench names are canonical, e.g. `Q01`, `Q06a`.
+                    let q = query.trim_start_matches(['Q', 'q']);
+                    let split = q.find(|c: char| !c.is_ascii_digit()).unwrap_or(q.len());
+                    let (num, suffix) = q.split_at(split);
+                    let normalized = format!("Q{num:0>2}{suffix}");
+                    val.retain(|bench| bench.name().eq_ignore_ascii_case(&normalized));
                 }
                 (key, val)
             })
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/01a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/01a.benchmark
new file mode 100644
index 0000000000..1641b348b8
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/01a.benchmark
@@ -0,0 +1,35 @@
+name Q01a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mc.note) AS production_note,
+       MIN(t.title) AS movie_title,
+       MIN(t.production_year) AS movie_year
+FROM company_type AS ct,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info_idx AS mi_idx,
+     title AS t
+WHERE ct.kind = 'production companies'
+  AND it.info = 'top 250 rank'
+  AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'
+  AND (mc.note LIKE '%(co-production)%'
+       OR mc.note LIKE '%(presents)%')
+  AND ct.id = mc.company_type_id
+  AND t.id = mc.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND it.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/01a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/01b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/01b.benchmark
new file mode 100644
index 0000000000..e8515ab3a8
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/01b.benchmark
@@ -0,0 +1,34 @@
+name Q01b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mc.note) AS production_note,
+       MIN(t.title) AS movie_title,
+       MIN(t.production_year) AS movie_year
+FROM company_type AS ct,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info_idx AS mi_idx,
+     title AS t
+WHERE ct.kind = 'production companies'
+  AND it.info = 'bottom 10 rank'
+  AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'
+  AND t.production_year BETWEEN 2005 AND 2010
+  AND ct.id = mc.company_type_id
+  AND t.id = mc.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND it.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/01b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/01c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/01c.benchmark
new file mode 100644
index 0000000000..fb9711a34f
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/01c.benchmark
@@ -0,0 +1,35 @@
+name Q01c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mc.note) AS production_note,
+       MIN(t.title) AS movie_title,
+       MIN(t.production_year) AS movie_year
+FROM company_type AS ct,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info_idx AS mi_idx,
+     title AS t
+WHERE ct.kind = 'production companies'
+  AND it.info = 'top 250 rank'
+  AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'
+  AND (mc.note LIKE '%(co-production)%')
+  AND t.production_year >2010
+  AND ct.id = mc.company_type_id
+  AND t.id = mc.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND it.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/01c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/01d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/01d.benchmark
new file mode 100644
index 0000000000..00dff7d071
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/01d.benchmark
@@ -0,0 +1,34 @@
+name Q01d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mc.note) AS production_note,
+       MIN(t.title) AS movie_title,
+       MIN(t.production_year) AS movie_year
+FROM company_type AS ct,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info_idx AS mi_idx,
+     title AS t
+WHERE ct.kind = 'production companies'
+  AND it.info = 'bottom 10 rank'
+  AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'
+  AND t.production_year >2000
+  AND ct.id = mc.company_type_id
+  AND t.id = mc.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND it.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/01d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/02a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/02a.benchmark
new file mode 100644
index 0000000000..d3455b56a4
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/02a.benchmark
@@ -0,0 +1,30 @@
+name Q02a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS movie_title
+FROM company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code ='[de]'
+  AND k.keyword ='character-name-in-title'
+  AND cn.id = mc.company_id
+  AND mc.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/02a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/02b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/02b.benchmark
new file mode 100644
index 0000000000..b6cf22600a
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/02b.benchmark
@@ -0,0 +1,30 @@
+name Q02b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS movie_title
+FROM company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code ='[nl]'
+  AND k.keyword ='character-name-in-title'
+  AND cn.id = mc.company_id
+  AND mc.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/02b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/02c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/02c.benchmark
new file mode 100644
index 0000000000..b020e9e3cd
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/02c.benchmark
@@ -0,0 +1,30 @@
+name Q02c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS movie_title
+FROM company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code ='[sm]'
+  AND k.keyword ='character-name-in-title'
+  AND cn.id = mc.company_id
+  AND mc.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/02c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/02d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/02d.benchmark
new file mode 100644
index 0000000000..0835545421
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/02d.benchmark
@@ -0,0 +1,30 @@
+name Q02d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS movie_title
+FROM company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND k.keyword ='character-name-in-title'
+  AND cn.id = mc.company_id
+  AND mc.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/02d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/03a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/03a.benchmark
new file mode 100644
index 0000000000..22112a2894
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/03a.benchmark
@@ -0,0 +1,36 @@
+name Q03a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS movie_title
+FROM keyword AS k,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE k.keyword LIKE '%sequel%'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German')
+  AND t.production_year > 2005
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/03a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/03b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/03b.benchmark
new file mode 100644
index 0000000000..ab24455fd0
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/03b.benchmark
@@ -0,0 +1,29 @@
+name Q03b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS movie_title
+FROM keyword AS k,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE k.keyword LIKE '%sequel%'
+  AND mi.info IN ('Bulgaria')
+  AND t.production_year > 2010
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/03b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/03c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/03c.benchmark
new file mode 100644
index 0000000000..65cfe87df1
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/03c.benchmark
@@ -0,0 +1,38 @@
+name Q03c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS movie_title
+FROM keyword AS k,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE k.keyword LIKE '%sequel%'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND t.production_year > 1990
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/03c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/04a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/04a.benchmark
new file mode 100644
index 0000000000..ff5992501d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/04a.benchmark
@@ -0,0 +1,33 @@
+name Q04a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS movie_title
+FROM info_type AS it,
+     keyword AS k,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE it.info ='rating'
+  AND k.keyword LIKE '%sequel%'
+  AND mi_idx.info > '5.0'
+  AND t.production_year > 2005
+  AND t.id = mi_idx.movie_id
+  AND t.id = mk.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/04a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/04b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/04b.benchmark
new file mode 100644
index 0000000000..fbcbf42aed
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/04b.benchmark
@@ -0,0 +1,33 @@
+name Q04b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS movie_title
+FROM info_type AS it,
+     keyword AS k,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE it.info ='rating'
+  AND k.keyword LIKE '%sequel%'
+  AND mi_idx.info > '9.0'
+  AND t.production_year > 2010
+  AND t.id = mi_idx.movie_id
+  AND t.id = mk.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/04b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/04c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/04c.benchmark
new file mode 100644
index 0000000000..cc0791f6fc
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/04c.benchmark
@@ -0,0 +1,33 @@
+name Q04c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS movie_title
+FROM info_type AS it,
+     keyword AS k,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE it.info ='rating'
+  AND k.keyword LIKE '%sequel%'
+  AND mi_idx.info > '2.0'
+  AND t.production_year > 1990
+  AND t.id = mi_idx.movie_id
+  AND t.id = mk.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/04c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/05a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/05a.benchmark
new file mode 100644
index 0000000000..04ea2cb309
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/05a.benchmark
@@ -0,0 +1,40 @@
+name Q05a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS typical_european_movie
+FROM company_type AS ct,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info AS mi,
+     title AS t
+WHERE ct.kind = 'production companies'
+  AND mc.note LIKE '%(theatrical)%'
+  AND mc.note LIKE '%(France)%'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German')
+  AND t.production_year > 2005
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND ct.id = mc.company_type_id
+  AND it.id = mi.info_type_id;
+
+result sql_benchmarks/imdb/results/05a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/05b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/05b.benchmark
new file mode 100644
index 0000000000..d2a8011bd8
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/05b.benchmark
@@ -0,0 +1,35 @@
+name Q05b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS american_vhs_movie
+FROM company_type AS ct,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info AS mi,
+     title AS t
+WHERE ct.kind = 'production companies'
+  AND mc.note LIKE '%(VHS)%'
+  AND mc.note LIKE '%(USA)%'
+  AND mc.note LIKE '%(1994)%'
+  AND mi.info IN ('USA',
+                  'America')
+  AND t.production_year > 2010
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND ct.id = mc.company_type_id
+  AND it.id = mi.info_type_id;
+
+result sql_benchmarks/imdb/results/05b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/05c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/05c.benchmark
new file mode 100644
index 0000000000..7467bf826d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/05c.benchmark
@@ -0,0 +1,42 @@
+name Q05c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS american_movie
+FROM company_type AS ct,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info AS mi,
+     title AS t
+WHERE ct.kind = 'production companies'
+  AND mc.note NOT LIKE '%(TV)%'
+  AND mc.note LIKE '%(USA)%'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND t.production_year > 1990
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND ct.id = mc.company_type_id
+  AND it.id = mi.info_type_id;
+
+result sql_benchmarks/imdb/results/05c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/06a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/06a.benchmark
new file mode 100644
index 0000000000..cadd66c86a
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/06a.benchmark
@@ -0,0 +1,33 @@
+name Q06a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(k.keyword) AS movie_keyword,
+       MIN(n.name) AS actor_name,
+       MIN(t.title) AS marvel_movie
+FROM cast_info AS ci,
+     keyword AS k,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword = 'marvel-cinematic-universe'
+  AND n.name LIKE '%Downey%Robert%'
+  AND t.production_year > 2010
+  AND k.id = mk.keyword_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND n.id = ci.person_id;
+
+result sql_benchmarks/imdb/results/06a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/06b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/06b.benchmark
new file mode 100644
index 0000000000..08d310baea
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/06b.benchmark
@@ -0,0 +1,40 @@
+name Q06b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(k.keyword) AS movie_keyword,
+       MIN(n.name) AS actor_name,
+       MIN(t.title) AS hero_movie
+FROM cast_info AS ci,
+     keyword AS k,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword IN ('superhero',
+                    'sequel',
+                    'second-part',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence')
+  AND n.name LIKE '%Downey%Robert%'
+  AND t.production_year > 2014
+  AND k.id = mk.keyword_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND n.id = ci.person_id;
+
+result sql_benchmarks/imdb/results/06b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/06c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/06c.benchmark
new file mode 100644
index 0000000000..125b48c5a3
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/06c.benchmark
@@ -0,0 +1,33 @@
+name Q06c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(k.keyword) AS movie_keyword,
+       MIN(n.name) AS actor_name,
+       MIN(t.title) AS marvel_movie
+FROM cast_info AS ci,
+     keyword AS k,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword = 'marvel-cinematic-universe'
+  AND n.name LIKE '%Downey%Robert%'
+  AND t.production_year > 2014
+  AND k.id = mk.keyword_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND n.id = ci.person_id;
+
+result sql_benchmarks/imdb/results/06c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/06d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/06d.benchmark
new file mode 100644
index 0000000000..0ce0c10b6b
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/06d.benchmark
@@ -0,0 +1,40 @@
+name Q06d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(k.keyword) AS movie_keyword,
+       MIN(n.name) AS actor_name,
+       MIN(t.title) AS hero_movie
+FROM cast_info AS ci,
+     keyword AS k,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword IN ('superhero',
+                    'sequel',
+                    'second-part',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence')
+  AND n.name LIKE '%Downey%Robert%'
+  AND t.production_year > 2000
+  AND k.id = mk.keyword_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND n.id = ci.person_id;
+
+result sql_benchmarks/imdb/results/06d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/06e.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/06e.benchmark
new file mode 100644
index 0000000000..d6eb6b8a7f
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/06e.benchmark
@@ -0,0 +1,33 @@
+name Q06e
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(k.keyword) AS movie_keyword,
+       MIN(n.name) AS actor_name,
+       MIN(t.title) AS marvel_movie
+FROM cast_info AS ci,
+     keyword AS k,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword = 'marvel-cinematic-universe'
+  AND n.name LIKE '%Downey%Robert%'
+  AND t.production_year > 2000
+  AND k.id = mk.keyword_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND n.id = ci.person_id;
+
+result sql_benchmarks/imdb/results/06e.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/06f.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/06f.benchmark
new file mode 100644
index 0000000000..8387633632
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/06f.benchmark
@@ -0,0 +1,39 @@
+name Q06f
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(k.keyword) AS movie_keyword,
+       MIN(n.name) AS actor_name,
+       MIN(t.title) AS hero_movie
+FROM cast_info AS ci,
+     keyword AS k,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword IN ('superhero',
+                    'sequel',
+                    'second-part',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence')
+  AND t.production_year > 2000
+  AND k.id = mk.keyword_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND n.id = ci.person_id;
+
+result sql_benchmarks/imdb/results/06f.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/07a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/07a.benchmark
new file mode 100644
index 0000000000..1ad5388cc2
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/07a.benchmark
@@ -0,0 +1,47 @@
+name Q07a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS of_person,
+       MIN(t.title) AS biography_movie
+FROM aka_name AS an,
+     cast_info AS ci,
+     info_type AS it,
+     link_type AS lt,
+     movie_link AS ml,
+     name AS n,
+     person_info AS pi,
+     title AS t
+WHERE an.name LIKE '%a%'
+  AND it.info ='mini biography'
+  AND lt.link ='features'
+  AND n.name_pcode_cf BETWEEN 'A' AND 'F'
+  AND (n.gender='m'
+       OR (n.gender = 'f'
+           AND n.name LIKE 'B%'))
+  AND pi.note ='Volker Boehm'
+  AND t.production_year BETWEEN 1980 AND 1995
+  AND n.id = an.person_id
+  AND n.id = pi.person_id
+  AND ci.person_id = n.id
+  AND t.id = ci.movie_id
+  AND ml.linked_movie_id = t.id
+  AND lt.id = ml.link_type_id
+  AND it.id = pi.info_type_id
+  AND pi.person_id = an.person_id
+  AND pi.person_id = ci.person_id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = ml.linked_movie_id;
+
+result sql_benchmarks/imdb/results/07a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/07b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/07b.benchmark
new file mode 100644
index 0000000000..bfc2e107a9
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/07b.benchmark
@@ -0,0 +1,45 @@
+name Q07b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS of_person,
+       MIN(t.title) AS biography_movie
+FROM aka_name AS an,
+     cast_info AS ci,
+     info_type AS it,
+     link_type AS lt,
+     movie_link AS ml,
+     name AS n,
+     person_info AS pi,
+     title AS t
+WHERE an.name LIKE '%a%'
+  AND it.info ='mini biography'
+  AND lt.link ='features'
+  AND n.name_pcode_cf LIKE 'D%'
+  AND n.gender='m'
+  AND pi.note ='Volker Boehm'
+  AND t.production_year BETWEEN 1980 AND 1984
+  AND n.id = an.person_id
+  AND n.id = pi.person_id
+  AND ci.person_id = n.id
+  AND t.id = ci.movie_id
+  AND ml.linked_movie_id = t.id
+  AND lt.id = ml.link_type_id
+  AND it.id = pi.info_type_id
+  AND pi.person_id = an.person_id
+  AND pi.person_id = ci.person_id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = ml.linked_movie_id;
+
+result sql_benchmarks/imdb/results/07b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/07c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/07c.benchmark
new file mode 100644
index 0000000000..449df56c14
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/07c.benchmark
@@ -0,0 +1,52 @@
+name Q07c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS cast_member_name,
+       MIN(pi.info) AS cast_member_info
+FROM aka_name AS an,
+     cast_info AS ci,
+     info_type AS it,
+     link_type AS lt,
+     movie_link AS ml,
+     name AS n,
+     person_info AS pi,
+     title AS t
+WHERE an.name IS NOT NULL
+  AND (an.name LIKE '%a%'
+       OR an.name LIKE 'A%')
+  AND it.info ='mini biography'
+  AND lt.link IN ('references',
+                  'referenced in',
+                  'features',
+                  'featured in')
+  AND n.name_pcode_cf BETWEEN 'A' AND 'F'
+  AND (n.gender='m'
+       OR (n.gender = 'f'
+           AND n.name LIKE 'A%'))
+  AND pi.note IS NOT NULL
+  AND t.production_year BETWEEN 1980 AND 2010
+  AND n.id = an.person_id
+  AND n.id = pi.person_id
+  AND ci.person_id = n.id
+  AND t.id = ci.movie_id
+  AND ml.linked_movie_id = t.id
+  AND lt.id = ml.link_type_id
+  AND it.id = pi.info_type_id
+  AND pi.person_id = an.person_id
+  AND pi.person_id = ci.person_id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = ml.linked_movie_id;
+
+result sql_benchmarks/imdb/results/07c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/08a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/08a.benchmark
new file mode 100644
index 0000000000..72914b32c3
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/08a.benchmark
@@ -0,0 +1,41 @@
+name Q08a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an1.name) AS actress_pseudonym,
+       MIN(t.title) AS japanese_movie_dubbed
+FROM aka_name AS an1,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n1,
+     role_type AS rt,
+     title AS t
+WHERE ci.note ='(voice: English version)'
+  AND cn.country_code ='[jp]'
+  AND mc.note LIKE '%(Japan)%'
+  AND mc.note NOT LIKE '%(USA)%'
+  AND n1.name LIKE '%Yo%'
+  AND n1.name NOT LIKE '%Yu%'
+  AND rt.role ='actress'
+  AND an1.person_id = n1.id
+  AND n1.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND an1.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/08a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/08b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/08b.benchmark
new file mode 100644
index 0000000000..a66486d16d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/08b.benchmark
@@ -0,0 +1,46 @@
+name Q08b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS acress_pseudonym,
+       MIN(t.title) AS japanese_anime_movie
+FROM aka_name AS an,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note ='(voice: English version)'
+  AND cn.country_code ='[jp]'
+  AND mc.note LIKE '%(Japan)%'
+  AND mc.note NOT LIKE '%(USA)%'
+  AND (mc.note LIKE '%(2006)%'
+       OR mc.note LIKE '%(2007)%')
+  AND n.name LIKE '%Yo%'
+  AND n.name NOT LIKE '%Yu%'
+  AND rt.role ='actress'
+  AND t.production_year BETWEEN 2006 AND 2007
+  AND (t.title LIKE 'One Piece%'
+       OR t.title LIKE 'Dragon Ball Z%')
+  AND an.person_id = n.id
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/08b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/08c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/08c.benchmark
new file mode 100644
index 0000000000..116a9c9f60
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/08c.benchmark
@@ -0,0 +1,36 @@
+name Q08c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(a1.name) AS writer_pseudo_name,
+       MIN(t.title) AS movie_title
+FROM aka_name AS a1,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n1,
+     role_type AS rt,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND rt.role ='writer'
+  AND a1.person_id = n1.id
+  AND n1.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND a1.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/08c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/08d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/08d.benchmark
new file mode 100644
index 0000000000..def2f26b3d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/08d.benchmark
@@ -0,0 +1,36 @@
+name Q08d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an1.name) AS costume_designer_pseudo,
+       MIN(t.title) AS movie_with_costumes
+FROM aka_name AS an1,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n1,
+     role_type AS rt,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND rt.role ='costume designer'
+  AND an1.person_id = n1.id
+  AND n1.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND an1.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/08d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/09a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/09a.benchmark
new file mode 100644
index 0000000000..7cb040bc6d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/09a.benchmark
@@ -0,0 +1,49 @@
+name Q09a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS alternative_name,
+       MIN(chn.name) AS character_name,
+       MIN(t.title) AS movie
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND mc.note IS NOT NULL
+  AND (mc.note LIKE '%(USA)%'
+       OR mc.note LIKE '%(worldwide)%')
+  AND n.gender ='f'
+  AND n.name LIKE '%Ang%'
+  AND rt.role ='actress'
+  AND t.production_year BETWEEN 2005 AND 2015
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND n.id = ci.person_id
+  AND chn.id = ci.person_role_id
+  AND an.person_id = n.id
+  AND an.person_id = ci.person_id;
+
+result sql_benchmarks/imdb/results/09a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/09b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/09b.benchmark
new file mode 100644
index 0000000000..a3b7f1e200
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/09b.benchmark
@@ -0,0 +1,47 @@
+name Q09b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS alternative_name,
+       MIN(chn.name) AS voiced_character,
+       MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS american_movie
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note = '(voice)'
+  AND cn.country_code ='[us]'
+  AND mc.note LIKE '%(200%)%'
+  AND (mc.note LIKE '%(USA)%'
+       OR mc.note LIKE '%(worldwide)%')
+  AND n.gender ='f'
+  AND n.name LIKE '%Angel%'
+  AND rt.role ='actress'
+  AND t.production_year BETWEEN 2007 AND 2010
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND n.id = ci.person_id
+  AND chn.id = ci.person_role_id
+  AND an.person_id = n.id
+  AND an.person_id = ci.person_id;
+
+result sql_benchmarks/imdb/results/09b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/09c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/09c.benchmark
new file mode 100644
index 0000000000..1588622de4
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/09c.benchmark
@@ -0,0 +1,46 @@
+name Q09c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS alternative_name,
+       MIN(chn.name) AS voiced_character_name,
+       MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS american_movie
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND n.gender ='f'
+  AND n.name LIKE '%An%'
+  AND rt.role ='actress'
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND n.id = ci.person_id
+  AND chn.id = ci.person_role_id
+  AND an.person_id = n.id
+  AND an.person_id = ci.person_id;
+
+result sql_benchmarks/imdb/results/09c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/09d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/09d.benchmark
new file mode 100644
index 0000000000..959a61c3b6
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/09d.benchmark
@@ -0,0 +1,45 @@
+name Q09d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS alternative_name,
+       MIN(chn.name) AS voiced_char_name,
+       MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS american_movie
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     movie_companies AS mc,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND n.gender ='f'
+  AND rt.role ='actress'
+  AND ci.movie_id = t.id
+  AND t.id = mc.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.role_id = rt.id
+  AND n.id = ci.person_id
+  AND chn.id = ci.person_role_id
+  AND an.person_id = n.id
+  AND an.person_id = ci.person_id;
+
+result sql_benchmarks/imdb/results/09d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/10a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/10a.benchmark
new file mode 100644
index 0000000000..ba58639156
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/10a.benchmark
@@ -0,0 +1,38 @@
+name Q10a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS uncredited_voiced_character,
+       MIN(t.title) AS russian_movie
+FROM char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     company_type AS ct,
+     movie_companies AS mc,
+     role_type AS rt,
+     title AS t
+WHERE ci.note LIKE '%(voice)%'
+  AND ci.note LIKE '%(uncredited)%'
+  AND cn.country_code = '[ru]'
+  AND rt.role = 'actor'
+  AND t.production_year > 2005
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND chn.id = ci.person_role_id
+  AND rt.id = ci.role_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id;
+
+result sql_benchmarks/imdb/results/10a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/10b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/10b.benchmark
new file mode 100644
index 0000000000..1947b640b3
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/10b.benchmark
@@ -0,0 +1,37 @@
+name Q10b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS character,
+       MIN(t.title) AS russian_mov_with_actor_producer
+FROM char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     company_type AS ct,
+     movie_companies AS mc,
+     role_type AS rt,
+     title AS t
+WHERE ci.note LIKE '%(producer)%'
+  AND cn.country_code = '[ru]'
+  AND rt.role = 'actor'
+  AND t.production_year > 2010
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND chn.id = ci.person_role_id
+  AND rt.id = ci.role_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id;
+
+result sql_benchmarks/imdb/results/10b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/10c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/10c.benchmark
new file mode 100644
index 0000000000..2fb881324b
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/10c.benchmark
@@ -0,0 +1,36 @@
+name Q10c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS character,
+       MIN(t.title) AS movie_with_american_producer
+FROM char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     company_type AS ct,
+     movie_companies AS mc,
+     role_type AS rt,
+     title AS t
+WHERE ci.note LIKE '%(producer)%'
+  AND cn.country_code = '[us]'
+  AND t.production_year > 1990
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND chn.id = ci.person_role_id
+  AND rt.id = ci.role_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id;
+
+result sql_benchmarks/imdb/results/10c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/11a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/11a.benchmark
new file mode 100644
index 0000000000..d24bc35146
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/11a.benchmark
@@ -0,0 +1,46 @@
+name Q11a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS from_company,
+       MIN(lt.link) AS movie_link_type,
+       MIN(t.title) AS non_polish_sequel_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follow%'
+  AND mc.note IS NULL
+  AND t.production_year BETWEEN 1950 AND 2000
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/11a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/11b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/11b.benchmark
new file mode 100644
index 0000000000..e2dd4cafba
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/11b.benchmark
@@ -0,0 +1,47 @@
+name Q11b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS from_company,
+       MIN(lt.link) AS movie_link_type,
+       MIN(t.title) AS sequel_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follows%'
+  AND mc.note IS NULL
+  AND t.production_year = 1998
+  AND t.title LIKE '%Money%'
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/11b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/11c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/11c.benchmark
new file mode 100644
index 0000000000..9fde2824af
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/11c.benchmark
@@ -0,0 +1,48 @@
+name Q11c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS from_company,
+       MIN(mc.note) AS production_note,
+       MIN(t.title) AS movie_based_on_book
+FROM company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cn.country_code !='[pl]'
+  AND (cn.name LIKE '20th Century Fox%'
+       OR cn.name LIKE 'Twentieth Century Fox%')
+  AND ct.kind != 'production companies'
+  AND ct.kind IS NOT NULL
+  AND k.keyword IN ('sequel',
+                    'revenge',
+                    'based-on-novel')
+  AND mc.note IS NOT NULL
+  AND t.production_year > 1950
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/11c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/11d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/11d.benchmark
new file mode 100644
index 0000000000..c66a6d5ee0
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/11d.benchmark
@@ -0,0 +1,46 @@
+name Q11d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS from_company,
+       MIN(mc.note) AS production_note,
+       MIN(t.title) AS movie_based_on_book
+FROM company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cn.country_code !='[pl]'
+  AND ct.kind != 'production companies'
+  AND ct.kind IS NOT NULL
+  AND k.keyword IN ('sequel',
+                    'revenge',
+                    'based-on-novel')
+  AND mc.note IS NOT NULL
+  AND t.production_year > 1950
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/11d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/12a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/12a.benchmark
new file mode 100644
index 0000000000..53cb5fe770
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/12a.benchmark
@@ -0,0 +1,46 @@
+name Q12a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS drama_horror_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     title AS t
+WHERE cn.country_code = '[us]'
+  AND ct.kind = 'production companies'
+  AND it1.info = 'genres'
+  AND it2.info = 'rating'
+  AND mi.info IN ('Drama',
+                  'Horror')
+  AND mi_idx.info > '8.0'
+  AND t.production_year BETWEEN 2005 AND 2008
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mi.info_type_id = it1.id
+  AND mi_idx.info_type_id = it2.id
+  AND t.id = mc.movie_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id;
+
+result sql_benchmarks/imdb/results/12a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/12b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/12b.benchmark
new file mode 100644
index 0000000000..02d76f9192
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/12b.benchmark
@@ -0,0 +1,46 @@
+name Q12b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS budget,
+       MIN(t.title) AS unsuccsessful_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND ct.kind IS NOT NULL
+  AND (ct.kind ='production companies'
+       OR ct.kind = 'distributors')
+  AND it1.info ='budget'
+  AND it2.info ='bottom 10 rank'
+  AND t.production_year >2000
+  AND (t.title LIKE 'Birdemic%'
+       OR t.title LIKE '%Movie%')
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mi.info_type_id = it1.id
+  AND mi_idx.info_type_id = it2.id
+  AND t.id = mc.movie_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id;
+
+result sql_benchmarks/imdb/results/12b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/12c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/12c.benchmark
new file mode 100644
index 0000000000..f104486194
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/12c.benchmark
@@ -0,0 +1,48 @@
+name Q12c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS mainstream_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     title AS t
+WHERE cn.country_code = '[us]'
+  AND ct.kind = 'production companies'
+  AND it1.info = 'genres'
+  AND it2.info = 'rating'
+  AND mi.info IN ('Drama',
+                  'Horror',
+                  'Western',
+                  'Family')
+  AND mi_idx.info > '7.0'
+  AND t.production_year BETWEEN 2000 AND 2010
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mi.info_type_id = it1.id
+  AND mi_idx.info_type_id = it2.id
+  AND t.id = mc.movie_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id;
+
+result sql_benchmarks/imdb/results/12c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/13a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/13a.benchmark
new file mode 100644
index 0000000000..60f6597802
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/13a.benchmark
@@ -0,0 +1,45 @@
+name Q13a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS release_date,
+       MIN(miidx.info) AS rating,
+       MIN(t.title) AS german_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it,
+     info_type AS it2,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS miidx,
+     title AS t
+WHERE cn.country_code ='[de]'
+  AND ct.kind ='production companies'
+  AND it.info ='rating'
+  AND it2.info ='release dates'
+  AND kt.kind ='movie'
+  AND mi.movie_id = t.id
+  AND it2.id = mi.info_type_id
+  AND kt.id = t.kind_id
+  AND mc.movie_id = t.id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id
+  AND miidx.movie_id = t.id
+  AND it.id = miidx.info_type_id
+  AND mi.movie_id = miidx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND miidx.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/13a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/13b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/13b.benchmark
new file mode 100644
index 0000000000..fbd016322b
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/13b.benchmark
@@ -0,0 +1,48 @@
+name Q13b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS producing_company,
+       MIN(miidx.info) AS rating,
+       MIN(t.title) AS movie_about_winning
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it,
+     info_type AS it2,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS miidx,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND ct.kind ='production companies'
+  AND it.info ='rating'
+  AND it2.info ='release dates'
+  AND kt.kind ='movie'
+  AND t.title != ''
+  AND (t.title LIKE '%Champion%'
+       OR t.title LIKE '%Loser%')
+  AND mi.movie_id = t.id
+  AND it2.id = mi.info_type_id
+  AND kt.id = t.kind_id
+  AND mc.movie_id = t.id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id
+  AND miidx.movie_id = t.id
+  AND it.id = miidx.info_type_id
+  AND mi.movie_id = miidx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND miidx.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/13b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/13c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/13c.benchmark
new file mode 100644
index 0000000000..b053b9eba9
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/13c.benchmark
@@ -0,0 +1,48 @@
+name Q13c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS producing_company,
+       MIN(miidx.info) AS rating,
+       MIN(t.title) AS movie_about_winning
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it,
+     info_type AS it2,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS miidx,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND ct.kind ='production companies'
+  AND it.info ='rating'
+  AND it2.info ='release dates'
+  AND kt.kind ='movie'
+  AND t.title != ''
+  AND (t.title LIKE 'Champion%'
+       OR t.title LIKE 'Loser%')
+  AND mi.movie_id = t.id
+  AND it2.id = mi.info_type_id
+  AND kt.id = t.kind_id
+  AND mc.movie_id = t.id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id
+  AND miidx.movie_id = t.id
+  AND it.id = miidx.info_type_id
+  AND mi.movie_id = miidx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND miidx.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/13c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/13d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/13d.benchmark
new file mode 100644
index 0000000000..f9807dcb2c
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/13d.benchmark
@@ -0,0 +1,45 @@
+name Q13d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS producing_company,
+       MIN(miidx.info) AS rating,
+       MIN(t.title) AS movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it,
+     info_type AS it2,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS miidx,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND ct.kind ='production companies'
+  AND it.info ='rating'
+  AND it2.info ='release dates'
+  AND kt.kind ='movie'
+  AND mi.movie_id = t.id
+  AND it2.id = mi.info_type_id
+  AND kt.id = t.kind_id
+  AND mc.movie_id = t.id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id
+  AND miidx.movie_id = t.id
+  AND it.id = miidx.info_type_id
+  AND mi.movie_id = miidx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND miidx.movie_id = mc.movie_id;
+
+result sql_benchmarks/imdb/results/13d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/14a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/14a.benchmark
new file mode 100644
index 0000000000..7b9fc0fb20
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/14a.benchmark
@@ -0,0 +1,56 @@
+name Q14a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS northern_dark_movie
+FROM info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind = 'movie'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '8.5'
+  AND t.production_year > 2010
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/14a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/14b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/14b.benchmark
new file mode 100644
index 0000000000..b843cbd341
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/14b.benchmark
@@ -0,0 +1,57 @@
+name Q14b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS western_dark_production
+FROM info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title')
+  AND kt.kind = 'movie'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info > '6.0'
+  AND t.production_year > 2010
+  AND (t.title LIKE '%murder%'
+       OR t.title LIKE '%Murder%'
+       OR t.title LIKE '%Mord%')
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/14b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/14c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/14c.benchmark
new file mode 100644
index 0000000000..2ea8cb2d38
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/14c.benchmark
@@ -0,0 +1,58 @@
+name Q14c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS north_european_dark_production
+FROM info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IS NOT NULL
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Danish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '8.5'
+  AND t.production_year > 2005
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/14c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/15a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/15a.benchmark
new file mode 100644
index 0000000000..47999ab30d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/15a.benchmark
@@ -0,0 +1,49 @@
+name Q15a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS release_date,
+       MIN(t.title) AS internet_movie
+FROM aka_title AS at_,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code = '[us]'
+  AND it1.info = 'release dates'
+  AND mc.note LIKE '%(200%)%'
+  AND mc.note LIKE '%(worldwide)%'
+  AND mi.note LIKE '%internet%'
+  AND mi.info LIKE 'USA:% 200%'
+  AND t.production_year > 2000
+  AND t.id = at_.movie_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = at_.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = at_.movie_id
+  AND mc.movie_id = at_.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id;
+
+result sql_benchmarks/imdb/results/15a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/15b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/15b.benchmark
new file mode 100644
index 0000000000..ec90b379fe
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/15b.benchmark
@@ -0,0 +1,50 @@
+name Q15b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS release_date,
+       MIN(t.title) AS youtube_movie
+FROM aka_title AS at_,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code = '[us]'
+  AND cn.name = 'YouTube'
+  AND it1.info = 'release dates'
+  AND mc.note LIKE '%(200%)%'
+  AND mc.note LIKE '%(worldwide)%'
+  AND mi.note LIKE '%internet%'
+  AND mi.info LIKE 'USA:% 200%'
+  AND t.production_year BETWEEN 2005 AND 2010
+  AND t.id = at_.movie_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = at_.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = at_.movie_id
+  AND mc.movie_id = at_.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id;
+
+result sql_benchmarks/imdb/results/15b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/15c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/15c.benchmark
new file mode 100644
index 0000000000..a9e1345203
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/15c.benchmark
@@ -0,0 +1,49 @@
+name Q15c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS release_date,
+       MIN(t.title) AS modern_american_internet_movie
+FROM aka_title AS at_,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code = '[us]'
+  AND it1.info = 'release dates'
+  AND mi.note LIKE '%internet%'
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'USA:% 199%'
+       OR mi.info LIKE 'USA:% 200%')
+  AND t.production_year > 1990
+  AND t.id = at_.movie_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = at_.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = at_.movie_id
+  AND mc.movie_id = at_.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id;
+
+result sql_benchmarks/imdb/results/15c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/15d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/15d.benchmark
new file mode 100644
index 0000000000..7f51437509
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/15d.benchmark
@@ -0,0 +1,46 @@
+name Q15d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(at_.title) AS aka_title,
+       MIN(t.title) AS internet_movie_title
+FROM aka_title AS at_,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code = '[us]'
+  AND it1.info = 'release dates'
+  AND mi.note LIKE '%internet%'
+  AND t.production_year > 1990
+  AND t.id = at_.movie_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = at_.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = at_.movie_id
+  AND mc.movie_id = at_.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id;
+
+result sql_benchmarks/imdb/results/15d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/16a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/16a.benchmark
new file mode 100644
index 0000000000..dd440026a5
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/16a.benchmark
@@ -0,0 +1,42 @@
+name Q16a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS cool_actor_pseudonym,
+       MIN(t.title) AS series_named_after_char
+FROM aka_name AS an,
+     cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND k.keyword ='character-name-in-title'
+  AND t.episode_nr >= 50
+  AND t.episode_nr < 100
+  AND an.person_id = n.id
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/16a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/16b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/16b.benchmark
new file mode 100644
index 0000000000..7fade8228f
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/16b.benchmark
@@ -0,0 +1,40 @@
+name Q16b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS cool_actor_pseudonym,
+       MIN(t.title) AS series_named_after_char
+FROM aka_name AS an,
+     cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND k.keyword ='character-name-in-title'
+  AND an.person_id = n.id
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/16b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/16c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/16c.benchmark
new file mode 100644
index 0000000000..d1ea1f6f04
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/16c.benchmark
@@ -0,0 +1,41 @@
+name Q16c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS cool_actor_pseudonym,
+       MIN(t.title) AS series_named_after_char
+FROM aka_name AS an,
+     cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND k.keyword ='character-name-in-title'
+  AND t.episode_nr < 100
+  AND an.person_id = n.id
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/16c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/16d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/16d.benchmark
new file mode 100644
index 0000000000..7622fc980d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/16d.benchmark
@@ -0,0 +1,42 @@
+name Q16d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(an.name) AS cool_actor_pseudonym,
+       MIN(t.title) AS series_named_after_char
+FROM aka_name AS an,
+     cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND k.keyword ='character-name-in-title'
+  AND t.episode_nr >= 5
+  AND t.episode_nr < 100
+  AND an.person_id = n.id
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND an.person_id = ci.person_id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/16d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/17a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/17a.benchmark
new file mode 100644
index 0000000000..3bf51dc255
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/17a.benchmark
@@ -0,0 +1,38 @@
+name Q17a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS member_in_charnamed_american_movie,
+       MIN(n.name) AS a1
+FROM cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND k.keyword ='character-name-in-title'
+  AND n.name LIKE 'B%'
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/17a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/17b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/17b.benchmark
new file mode 100644
index 0000000000..abe492623a
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/17b.benchmark
@@ -0,0 +1,37 @@
+name Q17b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS member_in_charnamed_movie,
+       MIN(n.name) AS a1
+FROM cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword ='character-name-in-title'
+  AND n.name LIKE 'Z%'
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/17b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/17c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/17c.benchmark
new file mode 100644
index 0000000000..83561d72f1
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/17c.benchmark
@@ -0,0 +1,37 @@
+name Q17c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS member_in_charnamed_movie,
+       MIN(n.name) AS a1
+FROM cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword ='character-name-in-title'
+  AND n.name LIKE 'X%'
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/17c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/17d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/17d.benchmark
new file mode 100644
index 0000000000..d7df85a5b6
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/17d.benchmark
@@ -0,0 +1,36 @@
+name Q17d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS member_in_charnamed_movie
+FROM cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword ='character-name-in-title'
+  AND n.name LIKE '%Bert%'
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/17d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/17e.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/17e.benchmark
new file mode 100644
index 0000000000..b05b5e1cd1
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/17e.benchmark
@@ -0,0 +1,36 @@
+name Q17e
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS member_in_charnamed_movie
+FROM cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cn.country_code ='[us]'
+  AND k.keyword ='character-name-in-title'
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/17e.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/17f.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/17f.benchmark
new file mode 100644
index 0000000000..4feef0a7f8
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/17f.benchmark
@@ -0,0 +1,36 @@
+name Q17f
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS member_in_charnamed_movie
+FROM cast_info AS ci,
+     company_name AS cn,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE k.keyword ='character-name-in-title'
+  AND n.name LIKE '%B%'
+  AND n.id = ci.person_id
+  AND ci.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_id = cn.id
+  AND ci.movie_id = mc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mc.movie_id = mk.movie_id;
+
+result sql_benchmarks/imdb/results/17f.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/18a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/18a.benchmark
new file mode 100644
index 0000000000..c3e5309e00
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/18a.benchmark
@@ -0,0 +1,42 @@
+name Q18a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(t.title) AS movie_title
+FROM cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(producer)',
+                  '(executive producer)')
+  AND it1.info = 'budget'
+  AND it2.info = 'votes'
+  AND n.gender = 'm'
+  AND n.name LIKE '%Tim%'
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/18a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/18b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/18b.benchmark
new file mode 100644
index 0000000000..d527cb3985
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/18b.benchmark
@@ -0,0 +1,50 @@
+name Q18b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(t.title) AS movie_title
+FROM cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'rating'
+  AND mi.info IN ('Horror',
+                  'Thriller')
+  AND mi.note IS NULL
+  AND mi_idx.info > '8.0'
+  AND n.gender IS NOT NULL
+  AND n.gender = 'f'
+  AND t.production_year BETWEEN 2008 AND 2014
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/18b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/18c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/18c.benchmark
new file mode 100644
index 0000000000..30aeff6153
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/18c.benchmark
@@ -0,0 +1,50 @@
+name Q18c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(t.title) AS movie_title
+FROM cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND mi.info IN ('Horror',
+                  'Action',
+                  'Sci-Fi',
+                  'Thriller',
+                  'Crime',
+                  'War')
+  AND n.gender = 'm'
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/18c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/19a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/19a.benchmark
new file mode 100644
index 0000000000..eef6a7cdec
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/19a.benchmark
@@ -0,0 +1,58 @@
+name Q19a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS voiced_movie
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info AS mi,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND mc.note IS NOT NULL
+  AND (mc.note LIKE '%(USA)%'
+       OR mc.note LIKE '%(worldwide)%')
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'Japan:%200%'
+       OR mi.info LIKE 'USA:%200%')
+  AND n.gender ='f'
+  AND n.name LIKE '%Ang%'
+  AND rt.role ='actress'
+  AND t.production_year BETWEEN 2005 AND 2009
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id;
+
+result sql_benchmarks/imdb/results/19a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/19b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/19b.benchmark
new file mode 100644
index 0000000000..49a29d2646
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/19b.benchmark
@@ -0,0 +1,56 @@
+name Q19b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS kung_fu_panda
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info AS mi,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note = '(voice)'
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND mc.note LIKE '%(200%)%'
+  AND (mc.note LIKE '%(USA)%'
+       OR mc.note LIKE '%(worldwide)%')
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'Japan:%2007%'
+       OR mi.info LIKE 'USA:%2008%')
+  AND n.gender ='f'
+  AND n.name LIKE '%Angel%'
+  AND rt.role ='actress'
+  AND t.production_year BETWEEN 2007 AND 2008
+  AND t.title LIKE '%Kung%Fu%Panda%'
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id;
+
+result sql_benchmarks/imdb/results/19b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/19c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/19c.benchmark
new file mode 100644
index 0000000000..1c13abf5fb
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/19c.benchmark
@@ -0,0 +1,55 @@
+name Q19c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS jap_engl_voiced_movie
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info AS mi,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'Japan:%200%'
+       OR mi.info LIKE 'USA:%200%')
+  AND n.gender ='f'
+  AND n.name LIKE '%An%'
+  AND rt.role ='actress'
+  AND t.production_year > 2000
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id;
+
+result sql_benchmarks/imdb/results/19c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/19d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/19d.benchmark
new file mode 100644
index 0000000000..34dfd2ef43
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/19d.benchmark
@@ -0,0 +1,51 @@
+name Q19d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS jap_engl_voiced_movie
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     movie_companies AS mc,
+     movie_info AS mi,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND n.gender ='f'
+  AND rt.role ='actress'
+  AND t.production_year > 2000
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id;
+
+result sql_benchmarks/imdb/results/19d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/20a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/20a.benchmark
new file mode 100644
index 0000000000..3a30479008
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/20a.benchmark
@@ -0,0 +1,55 @@
+name Q20a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS complete_downey_ironman_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     keyword AS k,
+     kind_type AS kt,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind LIKE '%complete%'
+  AND chn.name NOT LIKE '%Sherlock%'
+  AND (chn.name LIKE '%Tony%Stark%'
+       OR chn.name LIKE '%Iron%Man%')
+  AND k.keyword IN ('superhero',
+                    'sequel',
+                    'second-part',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence')
+  AND kt.kind = 'movie'
+  AND t.production_year > 1950
+  AND kt.id = t.kind_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = ci.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND chn.id = ci.person_role_id
+  AND n.id = ci.person_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/20a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/20b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/20b.benchmark
new file mode 100644
index 0000000000..000eef0c34
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/20b.benchmark
@@ -0,0 +1,56 @@
+name Q20b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(t.title) AS complete_downey_ironman_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     keyword AS k,
+     kind_type AS kt,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind LIKE '%complete%'
+  AND chn.name NOT LIKE '%Sherlock%'
+  AND (chn.name LIKE '%Tony%Stark%'
+       OR chn.name LIKE '%Iron%Man%')
+  AND k.keyword IN ('superhero',
+                    'sequel',
+                    'second-part',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence')
+  AND kt.kind = 'movie'
+  AND n.name LIKE '%Downey%Robert%'
+  AND t.production_year > 2000
+  AND kt.id = t.kind_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = ci.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND chn.id = ci.person_role_id
+  AND n.id = ci.person_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/20b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/20c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/20c.benchmark
new file mode 100644
index 0000000000..4fa02af954
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/20c.benchmark
@@ -0,0 +1,58 @@
+name Q20c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(n.name) AS cast_member,
+       MIN(t.title) AS complete_dynamic_hero_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     keyword AS k,
+     kind_type AS kt,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind LIKE '%complete%'
+  AND chn.name IS NOT NULL
+  AND (chn.name LIKE '%man%'
+       OR chn.name LIKE '%Man%')
+  AND k.keyword IN ('superhero',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence',
+                    'magnet',
+                    'web',
+                    'claw',
+                    'laser')
+  AND kt.kind = 'movie'
+  AND t.production_year > 2000
+  AND kt.id = t.kind_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = ci.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND chn.id = ci.person_role_id
+  AND n.id = ci.person_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/20c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/21a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/21a.benchmark
new file mode 100644
index 0000000000..45713d402c
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/21a.benchmark
@@ -0,0 +1,59 @@
+name Q21a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS company_name,
+       MIN(lt.link) AS link_type,
+       MIN(t.title) AS western_follow_up
+FROM company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follow%'
+  AND mc.note IS NULL
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German')
+  AND t.production_year BETWEEN 1950 AND 2000
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND mi.movie_id = t.id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND ml.movie_id = mi.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mc.movie_id = mi.movie_id;
+
+result sql_benchmarks/imdb/results/21a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/21b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/21b.benchmark
new file mode 100644
index 0000000000..9fc4a1acd8
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/21b.benchmark
@@ -0,0 +1,53 @@
+name Q21b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS company_name,
+       MIN(lt.link) AS link_type,
+       MIN(t.title) AS german_follow_up
+FROM company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follow%'
+  AND mc.note IS NULL
+  AND mi.info IN ('Germany',
+                  'German')
+  AND t.production_year BETWEEN 2000 AND 2010
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND mi.movie_id = t.id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND ml.movie_id = mi.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mc.movie_id = mi.movie_id;
+
+result sql_benchmarks/imdb/results/21b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/21c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/21c.benchmark
new file mode 100644
index 0000000000..9143fc3fc6
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/21c.benchmark
@@ -0,0 +1,60 @@
+name Q21c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS company_name,
+       MIN(lt.link) AS link_type,
+       MIN(t.title) AS western_follow_up
+FROM company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follow%'
+  AND mc.note IS NULL
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German',
+                  'English')
+  AND t.production_year BETWEEN 1950 AND 2010
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND mi.movie_id = t.id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND ml.movie_id = mi.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mc.movie_id = mi.movie_id;
+
+result sql_benchmarks/imdb/results/21c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/22a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/22a.benchmark
new file mode 100644
index 0000000000..053bb3a088
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/22a.benchmark
@@ -0,0 +1,64 @@
+name Q22a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS western_violent_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code != '[us]'
+  AND it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mc.note NOT LIKE '%(USA)%'
+  AND mc.note LIKE '%(200%)%'
+  AND mi.info IN ('Germany',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '7.0'
+  AND t.production_year > 2008
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id;
+
+result sql_benchmarks/imdb/results/22a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/22b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/22b.benchmark
new file mode 100644
index 0000000000..5e3c9011e6
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/22b.benchmark
@@ -0,0 +1,64 @@
+name Q22b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS western_violent_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code != '[us]'
+  AND it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mc.note NOT LIKE '%(USA)%'
+  AND mc.note LIKE '%(200%)%'
+  AND mi.info IN ('Germany',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '7.0'
+  AND t.production_year > 2009
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id;
+
+result sql_benchmarks/imdb/results/22b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/22c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/22c.benchmark
new file mode 100644
index 0000000000..72f9eae846
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/22c.benchmark
@@ -0,0 +1,70 @@
+name Q22c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS western_violent_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code != '[us]'
+  AND it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mc.note NOT LIKE '%(USA)%'
+  AND mc.note LIKE '%(200%)%'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Danish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '8.5'
+  AND t.production_year > 2005
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id;
+
+result sql_benchmarks/imdb/results/22c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/22d.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/22d.benchmark
new file mode 100644
index 0000000000..c7906c6f0b
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/22d.benchmark
@@ -0,0 +1,68 @@
+name Q22d
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS western_violent_movie
+FROM company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE cn.country_code != '[us]'
+  AND it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Danish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '8.5'
+  AND t.production_year > 2005
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = mc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id;
+
+result sql_benchmarks/imdb/results/22d.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/23a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/23a.benchmark
new file mode 100644
index 0000000000..6922670965
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/23a.benchmark
@@ -0,0 +1,55 @@
+name Q23a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(kt.kind) AS movie_kind,
+       MIN(t.title) AS complete_us_internet_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE cct1.kind = 'complete+verified'
+  AND cn.country_code = '[us]'
+  AND it1.info = 'release dates'
+  AND kt.kind IN ('movie')
+  AND mi.note LIKE '%internet%'
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'USA:% 199%'
+       OR mi.info LIKE 'USA:% 200%')
+  AND t.production_year > 2000
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id
+  AND cct1.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/23a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/23b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/23b.benchmark
new file mode 100644
index 0000000000..800d1a4d6f
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/23b.benchmark
@@ -0,0 +1,57 @@
+name Q23b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(kt.kind) AS movie_kind,
+       MIN(t.title) AS complete_nerdy_internet_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE cct1.kind = 'complete+verified'
+  AND cn.country_code = '[us]'
+  AND it1.info = 'release dates'
+  AND k.keyword IN ('nerd',
+                    'loner',
+                    'alienation',
+                    'dignity')
+  AND kt.kind IN ('movie')
+  AND mi.note LIKE '%internet%'
+  AND mi.info LIKE 'USA:% 200%'
+  AND t.production_year > 2000
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id
+  AND cct1.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/23b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/23c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/23c.benchmark
new file mode 100644
index 0000000000..7ef7b698ce
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/23c.benchmark
@@ -0,0 +1,58 @@
+name Q23c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(kt.kind) AS movie_kind,
+       MIN(t.title) AS complete_us_internet_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     title AS t
+WHERE cct1.kind = 'complete+verified'
+  AND cn.country_code = '[us]'
+  AND it1.info = 'release dates'
+  AND kt.kind IN ('movie',
+                  'tv movie',
+                  'video movie',
+                  'video game')
+  AND mi.note LIKE '%internet%'
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'USA:% 199%'
+       OR mi.info LIKE 'USA:% 200%')
+  AND t.production_year > 1990
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND cn.id = mc.company_id
+  AND ct.id = mc.company_type_id
+  AND cct1.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/23c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/24a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/24a.benchmark
new file mode 100644
index 0000000000..085b9104e5
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/24a.benchmark
@@ -0,0 +1,66 @@
+name Q24a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS voiced_char_name,
+       MIN(n.name) AS voicing_actress_name,
+       MIN(t.title) AS voiced_action_movie_jap_eng
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND k.keyword IN ('hero',
+                    'martial-arts',
+                    'hand-to-hand-combat')
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'Japan:%201%'
+       OR mi.info LIKE 'USA:%201%')
+  AND n.gender ='f'
+  AND n.name LIKE '%An%'
+  AND rt.role ='actress'
+  AND t.production_year > 2010
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mk.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/24a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/24b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/24b.benchmark
new file mode 100644
index 0000000000..bdb50db40c
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/24b.benchmark
@@ -0,0 +1,69 @@
+name Q24b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS voiced_char_name,
+       MIN(n.name) AS voicing_actress_name,
+       MIN(t.title) AS kung_fu_panda
+FROM aka_name AS an,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     name AS n,
+     role_type AS rt,
+     title AS t
+WHERE ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND cn.name = 'DreamWorks Animation'
+  AND it.info = 'release dates'
+  AND k.keyword IN ('hero',
+                    'martial-arts',
+                    'hand-to-hand-combat',
+                    'computer-animated-movie')
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'Japan:%201%'
+       OR mi.info LIKE 'USA:%201%')
+  AND n.gender ='f'
+  AND n.name LIKE '%An%'
+  AND rt.role ='actress'
+  AND t.production_year > 2010
+  AND t.title LIKE 'Kung Fu Panda%'
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mk.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/24b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/25a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/25a.benchmark
new file mode 100644
index 0000000000..4994f4492d
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/25a.benchmark
@@ -0,0 +1,58 @@
+name Q25a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS male_writer,
+       MIN(t.title) AS violent_movie_title
+FROM cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity')
+  AND mi.info = 'Horror'
+  AND n.gender = 'm'
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/25a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/25b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/25b.benchmark
new file mode 100644
index 0000000000..56acb0a881
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/25b.benchmark
@@ -0,0 +1,60 @@
+name Q25b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS male_writer,
+       MIN(t.title) AS violent_movie_title
+FROM cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity')
+  AND mi.info = 'Horror'
+  AND n.gender = 'm'
+  AND t.production_year > 2010
+  AND t.title LIKE 'Vampire%'
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/25b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/25c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/25c.benchmark
new file mode 100644
index 0000000000..113b75c77b
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/25c.benchmark
@@ -0,0 +1,65 @@
+name Q25c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS male_writer,
+       MIN(t.title) AS violent_movie_title
+FROM cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'violence',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity',
+                    'hospital')
+  AND mi.info IN ('Horror',
+                  'Action',
+                  'Sci-Fi',
+                  'Thriller',
+                  'Crime',
+                  'War')
+  AND n.gender = 'm'
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id;
+
+result sql_benchmarks/imdb/results/25c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/26a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/26a.benchmark
new file mode 100644
index 0000000000..17ebb36029
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/26a.benchmark
@@ -0,0 +1,69 @@
+name Q26a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS character_name,
+       MIN(mi_idx.info) AS rating,
+       MIN(n.name) AS playing_actor,
+       MIN(t.title) AS complete_hero_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind LIKE '%complete%'
+  AND chn.name IS NOT NULL
+  AND (chn.name LIKE '%man%'
+       OR chn.name LIKE '%Man%')
+  AND it2.info = 'rating'
+  AND k.keyword IN ('superhero',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence',
+                    'magnet',
+                    'web',
+                    'claw',
+                    'laser')
+  AND kt.kind = 'movie'
+  AND mi_idx.info > '7.0'
+  AND t.production_year > 2000
+  AND kt.id = t.kind_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = cc.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mk.movie_id = ci.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND cc.movie_id = mi_idx.movie_id
+  AND chn.id = ci.person_role_id
+  AND n.id = ci.person_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/26a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/26b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/26b.benchmark
new file mode 100644
index 0000000000..bc03fd914c
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/26b.benchmark
@@ -0,0 +1,62 @@
+name Q26b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS character_name,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS complete_hero_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind LIKE '%complete%'
+  AND chn.name IS NOT NULL
+  AND (chn.name LIKE '%man%'
+       OR chn.name LIKE '%Man%')
+  AND it2.info = 'rating'
+  AND k.keyword IN ('superhero',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'fight')
+  AND kt.kind = 'movie'
+  AND mi_idx.info > '8.0'
+  AND t.production_year > 2005
+  AND kt.id = t.kind_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = cc.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mk.movie_id = ci.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND cc.movie_id = mi_idx.movie_id
+  AND chn.id = ci.person_role_id
+  AND n.id = ci.person_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/26b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/26c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/26c.benchmark
new file mode 100644
index 0000000000..b07e738425
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/26c.benchmark
@@ -0,0 +1,67 @@
+name Q26c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS character_name,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS complete_hero_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind LIKE '%complete%'
+  AND chn.name IS NOT NULL
+  AND (chn.name LIKE '%man%'
+       OR chn.name LIKE '%Man%')
+  AND it2.info = 'rating'
+  AND k.keyword IN ('superhero',
+                    'marvel-comics',
+                    'based-on-comic',
+                    'tv-special',
+                    'fight',
+                    'violence',
+                    'magnet',
+                    'web',
+                    'claw',
+                    'laser')
+  AND kt.kind = 'movie'
+  AND t.production_year > 2000
+  AND kt.id = t.kind_id
+  AND t.id = mk.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = cc.movie_id
+  AND t.id = mi_idx.movie_id
+  AND mk.movie_id = ci.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND cc.movie_id = mi_idx.movie_id
+  AND chn.id = ci.person_role_id
+  AND n.id = ci.person_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id
+  AND it2.id = mi_idx.info_type_id;
+
+result sql_benchmarks/imdb/results/26c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/27a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/27a.benchmark
new file mode 100644
index 0000000000..ff0cfebf81
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/27a.benchmark
@@ -0,0 +1,68 @@
+name Q27a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS producing_company,
+       MIN(lt.link) AS link_type,
+       MIN(t.title) AS complete_western_sequel
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cct1.kind IN ('cast',
+                    'crew')
+  AND cct2.kind = 'complete'
+  AND cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follow%'
+  AND mc.note IS NULL
+  AND mi.info IN ('Sweden',
+                  'Germany',
+                  'Swedish',
+                  'German')
+  AND t.production_year BETWEEN 1950 AND 2000
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND mi.movie_id = t.id
+  AND t.id = cc.movie_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND ml.movie_id = mi.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND ml.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi.movie_id = cc.movie_id;
+
+result sql_benchmarks/imdb/results/27a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/27b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/27b.benchmark
new file mode 100644
index 0000000000..bf0fa5b69e
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/27b.benchmark
@@ -0,0 +1,68 @@
+name Q27b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS producing_company,
+       MIN(lt.link) AS link_type,
+       MIN(t.title) AS complete_western_sequel
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cct1.kind IN ('cast',
+                    'crew')
+  AND cct2.kind = 'complete'
+  AND cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follow%'
+  AND mc.note IS NULL
+  AND mi.info IN ('Sweden',
+                  'Germany',
+                  'Swedish',
+                  'German')
+  AND t.production_year = 1998
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND mi.movie_id = t.id
+  AND t.id = cc.movie_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND ml.movie_id = mi.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND ml.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi.movie_id = cc.movie_id;
+
+result sql_benchmarks/imdb/results/27b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/27c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/27c.benchmark
new file mode 100644
index 0000000000..fd74445312
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/27c.benchmark
@@ -0,0 +1,72 @@
+name Q27c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS producing_company,
+       MIN(lt.link) AS link_type,
+       MIN(t.title) AS complete_western_sequel
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     company_name AS cn,
+     company_type AS ct,
+     keyword AS k,
+     link_type AS lt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind LIKE 'complete%'
+  AND cn.country_code !='[pl]'
+  AND (cn.name LIKE '%Film%'
+       OR cn.name LIKE '%Warner%')
+  AND ct.kind ='production companies'
+  AND k.keyword ='sequel'
+  AND lt.link LIKE '%follow%'
+  AND mc.note IS NULL
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Denish',
+                  'Norwegian',
+                  'German',
+                  'English')
+  AND t.production_year BETWEEN 1950 AND 2010
+  AND lt.id = ml.link_type_id
+  AND ml.movie_id = t.id
+  AND t.id = mk.movie_id
+  AND mk.keyword_id = k.id
+  AND t.id = mc.movie_id
+  AND mc.company_type_id = ct.id
+  AND mc.company_id = cn.id
+  AND mi.movie_id = t.id
+  AND t.id = cc.movie_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id
+  AND ml.movie_id = mk.movie_id
+  AND ml.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND ml.movie_id = mi.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND ml.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi.movie_id = cc.movie_id;
+
+result sql_benchmarks/imdb/results/27c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/28a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/28a.benchmark
new file mode 100644
index 0000000000..1fd17967b1
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/28a.benchmark
@@ -0,0 +1,82 @@
+name Q28a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS complete_euro_dark_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE cct1.kind = 'crew'
+  AND cct2.kind != 'complete+verified'
+  AND cn.country_code != '[us]'
+  AND it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mc.note NOT LIKE '%(USA)%'
+  AND mc.note LIKE '%(200%)%'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Danish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '8.5'
+  AND t.production_year > 2000
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi_idx.movie_id = cc.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/28a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/28b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/28b.benchmark
new file mode 100644
index 0000000000..0b68663f7f
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/28b.benchmark
@@ -0,0 +1,76 @@
+name Q28b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS complete_euro_dark_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE cct1.kind = 'crew'
+  AND cct2.kind != 'complete+verified'
+  AND cn.country_code != '[us]'
+  AND it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mc.note NOT LIKE '%(USA)%'
+  AND mc.note LIKE '%(200%)%'
+  AND mi.info IN ('Sweden',
+                  'Germany',
+                  'Swedish',
+                  'German')
+  AND mi_idx.info > '6.5'
+  AND t.production_year > 2005
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi_idx.movie_id = cc.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/28b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/28c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/28c.benchmark
new file mode 100644
index 0000000000..b64d407a67
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/28c.benchmark
@@ -0,0 +1,82 @@
+name Q28c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn.name) AS movie_company,
+       MIN(mi_idx.info) AS rating,
+       MIN(t.title) AS complete_euro_dark_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     company_name AS cn,
+     company_type AS ct,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     kind_type AS kt,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind = 'complete'
+  AND cn.country_code != '[us]'
+  AND it1.info = 'countries'
+  AND it2.info = 'rating'
+  AND k.keyword IN ('murder',
+                    'murder-in-title',
+                    'blood',
+                    'violence')
+  AND kt.kind IN ('movie',
+                  'episode')
+  AND mc.note NOT LIKE '%(USA)%'
+  AND mc.note LIKE '%(200%)%'
+  AND mi.info IN ('Sweden',
+                  'Norway',
+                  'Germany',
+                  'Denmark',
+                  'Swedish',
+                  'Danish',
+                  'Norwegian',
+                  'German',
+                  'USA',
+                  'American')
+  AND mi_idx.info < '8.5'
+  AND t.production_year > 2005
+  AND kt.id = t.kind_id
+  AND t.id = mi.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = cc.movie_id
+  AND mk.movie_id = mi.movie_id
+  AND mk.movie_id = mi_idx.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mc.movie_id = mi_idx.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi_idx.movie_id = cc.movie_id
+  AND k.id = mk.keyword_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND ct.id = mc.company_type_id
+  AND cn.id = mc.company_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/28c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/29a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/29a.benchmark
new file mode 100644
index 0000000000..40affdb3d5
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/29a.benchmark
@@ -0,0 +1,83 @@
+name Q29a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS voiced_char,
+       MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS voiced_animation
+FROM aka_name AS an,
+     complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     info_type AS it3,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     name AS n,
+     person_info AS pi,
+     role_type AS rt,
+     title AS t
+WHERE cct1.kind ='cast'
+  AND cct2.kind ='complete+verified'
+  AND chn.name = 'Queen'
+  AND ci.note IN ('(voice)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND it3.info = 'trivia'
+  AND k.keyword = 'computer-animation'
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'Japan:%200%'
+       OR mi.info LIKE 'USA:%200%')
+  AND n.gender ='f'
+  AND n.name LIKE '%An%'
+  AND rt.role ='actress'
+  AND t.title = 'Shrek 2'
+  AND t.production_year BETWEEN 2000 AND 2010
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = cc.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mk.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id
+  AND n.id = pi.person_id
+  AND ci.person_id = pi.person_id
+  AND it3.id = pi.info_type_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/29a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/29b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/29b.benchmark
new file mode 100644
index 0000000000..9d43c71510
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/29b.benchmark
@@ -0,0 +1,81 @@
+name Q29b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS voiced_char,
+       MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS voiced_animation
+FROM aka_name AS an,
+     complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     info_type AS it3,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     name AS n,
+     person_info AS pi,
+     role_type AS rt,
+     title AS t
+WHERE cct1.kind ='cast'
+  AND cct2.kind ='complete+verified'
+  AND chn.name = 'Queen'
+  AND ci.note IN ('(voice)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND it3.info = 'height'
+  AND k.keyword = 'computer-animation'
+  AND mi.info LIKE 'USA:%200%'
+  AND n.gender ='f'
+  AND n.name LIKE '%An%'
+  AND rt.role ='actress'
+  AND t.title = 'Shrek 2'
+  AND t.production_year BETWEEN 2000 AND 2005
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = cc.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mk.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id
+  AND n.id = pi.person_id
+  AND ci.person_id = pi.person_id
+  AND it3.id = pi.info_type_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/29b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/29c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/29c.benchmark
new file mode 100644
index 0000000000..9d0cbdc14c
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/29c.benchmark
@@ -0,0 +1,82 @@
+name Q29c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(chn.name) AS voiced_char,
+       MIN(n.name) AS voicing_actress,
+       MIN(t.title) AS voiced_animation
+FROM aka_name AS an,
+     complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     char_name AS chn,
+     cast_info AS ci,
+     company_name AS cn,
+     info_type AS it,
+     info_type AS it3,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_keyword AS mk,
+     name AS n,
+     person_info AS pi,
+     role_type AS rt,
+     title AS t
+WHERE cct1.kind ='cast'
+  AND cct2.kind ='complete+verified'
+  AND ci.note IN ('(voice)',
+                  '(voice: Japanese version)',
+                  '(voice) (uncredited)',
+                  '(voice: English version)')
+  AND cn.country_code ='[us]'
+  AND it.info = 'release dates'
+  AND it3.info = 'trivia'
+  AND k.keyword = 'computer-animation'
+  AND mi.info IS NOT NULL
+  AND (mi.info LIKE 'Japan:%200%'
+       OR mi.info LIKE 'USA:%200%')
+  AND n.gender ='f'
+  AND n.name LIKE '%An%'
+  AND rt.role ='actress'
+  AND t.production_year BETWEEN 2000 AND 2010
+  AND t.id = mi.movie_id
+  AND t.id = mc.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = cc.movie_id
+  AND mc.movie_id = ci.movie_id
+  AND mc.movie_id = mi.movie_id
+  AND mc.movie_id = mk.movie_id
+  AND mc.movie_id = cc.movie_id
+  AND mi.movie_id = ci.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND cn.id = mc.company_id
+  AND it.id = mi.info_type_id
+  AND n.id = ci.person_id
+  AND rt.id = ci.role_id
+  AND n.id = an.person_id
+  AND ci.person_id = an.person_id
+  AND chn.id = ci.person_role_id
+  AND n.id = pi.person_id
+  AND ci.person_id = pi.person_id
+  AND it3.id = pi.info_type_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/29c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/30a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/30a.benchmark
new file mode 100644
index 0000000000..747c43e60c
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/30a.benchmark
@@ -0,0 +1,75 @@
+name Q30a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS writer,
+       MIN(t.title) AS complete_violent_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind IN ('cast',
+                    'crew')
+  AND cct2.kind ='complete+verified'
+  AND ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'violence',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity',
+                    'hospital')
+  AND mi.info IN ('Horror',
+                  'Thriller')
+  AND n.gender = 'm'
+  AND t.production_year > 2000
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = cc.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND mi_idx.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/30a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/30b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/30b.benchmark
new file mode 100644
index 0000000000..6f29177a91
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/30b.benchmark
@@ -0,0 +1,78 @@
+name Q30b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS writer,
+       MIN(t.title) AS complete_gore_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind IN ('cast',
+                    'crew')
+  AND cct2.kind ='complete+verified'
+  AND ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'violence',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity',
+                    'hospital')
+  AND mi.info IN ('Horror',
+                  'Thriller')
+  AND n.gender = 'm'
+  AND t.production_year > 2000
+  AND (t.title LIKE '%Freddy%'
+       OR t.title LIKE '%Jason%'
+       OR t.title LIKE 'Saw%')
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = cc.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND mi_idx.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/30b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/30c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/30c.benchmark
new file mode 100644
index 0000000000..78cbbdf2f4
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/30c.benchmark
@@ -0,0 +1,77 @@
+name Q30c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS writer,
+       MIN(t.title) AS complete_violent_movie
+FROM complete_cast AS cc,
+     comp_cast_type AS cct1,
+     comp_cast_type AS cct2,
+     cast_info AS ci,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE cct1.kind = 'cast'
+  AND cct2.kind ='complete+verified'
+  AND ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'violence',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity',
+                    'hospital')
+  AND mi.info IN ('Horror',
+                  'Action',
+                  'Sci-Fi',
+                  'Thriller',
+                  'Crime',
+                  'War')
+  AND n.gender = 'm'
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = cc.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = cc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = cc.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND mi_idx.movie_id = cc.movie_id
+  AND mk.movie_id = cc.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id
+  AND cct1.id = cc.subject_id
+  AND cct2.id = cc.status_id;
+
+result sql_benchmarks/imdb/results/30c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/31a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/31a.benchmark
new file mode 100644
index 0000000000..8f3b5a1567
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/31a.benchmark
@@ -0,0 +1,70 @@
+name Q31a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS writer,
+       MIN(t.title) AS violent_liongate_movie
+FROM cast_info AS ci,
+     company_name AS cn,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND cn.name LIKE 'Lionsgate%'
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'violence',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity',
+                    'hospital')
+  AND mi.info IN ('Horror',
+                  'Thriller')
+  AND n.gender = 'm'
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND mi_idx.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id
+  AND cn.id = mc.company_id;
+
+result sql_benchmarks/imdb/results/31a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/31b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/31b.benchmark
new file mode 100644
index 0000000000..7395f37089
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/31b.benchmark
@@ -0,0 +1,75 @@
+name Q31b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS writer,
+       MIN(t.title) AS violent_liongate_movie
+FROM cast_info AS ci,
+     company_name AS cn,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND cn.name LIKE 'Lionsgate%'
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'violence',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity',
+                    'hospital')
+  AND mc.note LIKE '%(Blu-ray)%'
+  AND mi.info IN ('Horror',
+                  'Thriller')
+  AND n.gender = 'm'
+  AND t.production_year > 2000
+  AND (t.title LIKE '%Freddy%'
+       OR t.title LIKE '%Jason%'
+       OR t.title LIKE 'Saw%')
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND mi_idx.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id
+  AND cn.id = mc.company_id;
+
+result sql_benchmarks/imdb/results/31b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/31c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/31c.benchmark
new file mode 100644
index 0000000000..ca1efcf213
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/31c.benchmark
@@ -0,0 +1,73 @@
+name Q31c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(mi.info) AS movie_budget,
+       MIN(mi_idx.info) AS movie_votes,
+       MIN(n.name) AS writer,
+       MIN(t.title) AS violent_liongate_movie
+FROM cast_info AS ci,
+     company_name AS cn,
+     info_type AS it1,
+     info_type AS it2,
+     keyword AS k,
+     movie_companies AS mc,
+     movie_info AS mi,
+     movie_info_idx AS mi_idx,
+     movie_keyword AS mk,
+     name AS n,
+     title AS t
+WHERE ci.note IN ('(writer)',
+                  '(head writer)',
+                  '(written by)',
+                  '(story)',
+                  '(story editor)')
+  AND cn.name LIKE 'Lionsgate%'
+  AND it1.info = 'genres'
+  AND it2.info = 'votes'
+  AND k.keyword IN ('murder',
+                    'violence',
+                    'blood',
+                    'gore',
+                    'death',
+                    'female-nudity',
+                    'hospital')
+  AND mi.info IN ('Horror',
+                  'Action',
+                  'Sci-Fi',
+                  'Thriller',
+                  'Crime',
+                  'War')
+  AND t.id = mi.movie_id
+  AND t.id = mi_idx.movie_id
+  AND t.id = ci.movie_id
+  AND t.id = mk.movie_id
+  AND t.id = mc.movie_id
+  AND ci.movie_id = mi.movie_id
+  AND ci.movie_id = mi_idx.movie_id
+  AND ci.movie_id = mk.movie_id
+  AND ci.movie_id = mc.movie_id
+  AND mi.movie_id = mi_idx.movie_id
+  AND mi.movie_id = mk.movie_id
+  AND mi.movie_id = mc.movie_id
+  AND mi_idx.movie_id = mk.movie_id
+  AND mi_idx.movie_id = mc.movie_id
+  AND mk.movie_id = mc.movie_id
+  AND n.id = ci.person_id
+  AND it1.id = mi.info_type_id
+  AND it2.id = mi_idx.info_type_id
+  AND k.id = mk.keyword_id
+  AND cn.id = mc.company_id;
+
+result sql_benchmarks/imdb/results/31c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/32a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/32a.benchmark
new file mode 100644
index 0000000000..54380bc0c2
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/32a.benchmark
@@ -0,0 +1,33 @@
+name Q32a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(lt.link) AS link_type,
+       MIN(t1.title) AS first_movie,
+       MIN(t2.title) AS second_movie
+FROM keyword AS k,
+     link_type AS lt,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t1,
+     title AS t2
+WHERE k.keyword ='10,000-mile-club'
+  AND mk.keyword_id = k.id
+  AND t1.id = mk.movie_id
+  AND ml.movie_id = t1.id
+  AND ml.linked_movie_id = t2.id
+  AND lt.id = ml.link_type_id
+  AND mk.movie_id = t1.id;
+
+result sql_benchmarks/imdb/results/32a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/32b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/32b.benchmark
new file mode 100644
index 0000000000..7f6582efd2
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/32b.benchmark
@@ -0,0 +1,33 @@
+name Q32b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(lt.link) AS link_type,
+       MIN(t1.title) AS first_movie,
+       MIN(t2.title) AS second_movie
+FROM keyword AS k,
+     link_type AS lt,
+     movie_keyword AS mk,
+     movie_link AS ml,
+     title AS t1,
+     title AS t2
+WHERE k.keyword ='character-name-in-title'
+  AND mk.keyword_id = k.id
+  AND t1.id = mk.movie_id
+  AND ml.movie_id = t1.id
+  AND ml.linked_movie_id = t2.id
+  AND lt.id = ml.link_type_id
+  AND mk.movie_id = t1.id;
+
+result sql_benchmarks/imdb/results/32b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/33a.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/33a.benchmark
new file mode 100644
index 0000000000..f62e614f89
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/33a.benchmark
@@ -0,0 +1,66 @@
+name Q33a
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn1.name) AS first_company,
+       MIN(cn2.name) AS second_company,
+       MIN(mi_idx1.info) AS first_rating,
+       MIN(mi_idx2.info) AS second_rating,
+       MIN(t1.title) AS first_movie,
+       MIN(t2.title) AS second_movie
+FROM company_name AS cn1,
+     company_name AS cn2,
+     info_type AS it1,
+     info_type AS it2,
+     kind_type AS kt1,
+     kind_type AS kt2,
+     link_type AS lt,
+     movie_companies AS mc1,
+     movie_companies AS mc2,
+     movie_info_idx AS mi_idx1,
+     movie_info_idx AS mi_idx2,
+     movie_link AS ml,
+     title AS t1,
+     title AS t2
+WHERE cn1.country_code = '[us]'
+  AND it1.info = 'rating'
+  AND it2.info = 'rating'
+  AND kt1.kind IN ('tv series')
+  AND kt2.kind IN ('tv series')
+  AND lt.link IN ('sequel',
+                  'follows',
+                  'followed by')
+  AND mi_idx2.info < '3.0'
+  AND t2.production_year BETWEEN 2005 AND 2008
+  AND lt.id = ml.link_type_id
+  AND t1.id = ml.movie_id
+  AND t2.id = ml.linked_movie_id
+  AND it1.id = mi_idx1.info_type_id
+  AND t1.id = mi_idx1.movie_id
+  AND kt1.id = t1.kind_id
+  AND cn1.id = mc1.company_id
+  AND t1.id = mc1.movie_id
+  AND ml.movie_id = mi_idx1.movie_id
+  AND ml.movie_id = mc1.movie_id
+  AND mi_idx1.movie_id = mc1.movie_id
+  AND it2.id = mi_idx2.info_type_id
+  AND t2.id = mi_idx2.movie_id
+  AND kt2.id = t2.kind_id
+  AND cn2.id = mc2.company_id
+  AND t2.id = mc2.movie_id
+  AND ml.linked_movie_id = mi_idx2.movie_id
+  AND ml.linked_movie_id = mc2.movie_id
+  AND mi_idx2.movie_id = mc2.movie_id;
+
+result sql_benchmarks/imdb/results/33a.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/33b.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/33b.benchmark
new file mode 100644
index 0000000000..01f21763de
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/33b.benchmark
@@ -0,0 +1,64 @@
+name Q33b
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn1.name) AS first_company,
+       MIN(cn2.name) AS second_company,
+       MIN(mi_idx1.info) AS first_rating,
+       MIN(mi_idx2.info) AS second_rating,
+       MIN(t1.title) AS first_movie,
+       MIN(t2.title) AS second_movie
+FROM company_name AS cn1,
+     company_name AS cn2,
+     info_type AS it1,
+     info_type AS it2,
+     kind_type AS kt1,
+     kind_type AS kt2,
+     link_type AS lt,
+     movie_companies AS mc1,
+     movie_companies AS mc2,
+     movie_info_idx AS mi_idx1,
+     movie_info_idx AS mi_idx2,
+     movie_link AS ml,
+     title AS t1,
+     title AS t2
+WHERE cn1.country_code = '[nl]'
+  AND it1.info = 'rating'
+  AND it2.info = 'rating'
+  AND kt1.kind IN ('tv series')
+  AND kt2.kind IN ('tv series')
+  AND lt.link LIKE '%follow%'
+  AND mi_idx2.info < '3.0'
+  AND t2.production_year = 2007
+  AND lt.id = ml.link_type_id
+  AND t1.id = ml.movie_id
+  AND t2.id = ml.linked_movie_id
+  AND it1.id = mi_idx1.info_type_id
+  AND t1.id = mi_idx1.movie_id
+  AND kt1.id = t1.kind_id
+  AND cn1.id = mc1.company_id
+  AND t1.id = mc1.movie_id
+  AND ml.movie_id = mi_idx1.movie_id
+  AND ml.movie_id = mc1.movie_id
+  AND mi_idx1.movie_id = mc1.movie_id
+  AND it2.id = mi_idx2.info_type_id
+  AND t2.id = mi_idx2.movie_id
+  AND kt2.id = t2.kind_id
+  AND cn2.id = mc2.company_id
+  AND t2.id = mc2.movie_id
+  AND ml.linked_movie_id = mi_idx2.movie_id
+  AND ml.linked_movie_id = mc2.movie_id
+  AND mi_idx2.movie_id = mc2.movie_id;
+
+result sql_benchmarks/imdb/results/33b.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/benchmarks/33c.benchmark b/benchmarks/sql_benchmarks/imdb/benchmarks/33c.benchmark
new file mode 100644
index 0000000000..a0b7abed6c
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/benchmarks/33c.benchmark
@@ -0,0 +1,68 @@
+name Q33c
+group imdb
+
+echo Loading imdb tables
+
+load sql_benchmarks/imdb/init/load_${IMDB_FILE_TYPE:-parquet}.sql
+
+assert I
+SELECT COUNT(*) > 0 from title;
+----
+true
+
+run
+SELECT MIN(cn1.name) AS first_company,
+       MIN(cn2.name) AS second_company,
+       MIN(mi_idx1.info) AS first_rating,
+       MIN(mi_idx2.info) AS second_rating,
+       MIN(t1.title) AS first_movie,
+       MIN(t2.title) AS second_movie
+FROM company_name AS cn1,
+     company_name AS cn2,
+     info_type AS it1,
+     info_type AS it2,
+     kind_type AS kt1,
+     kind_type AS kt2,
+     link_type AS lt,
+     movie_companies AS mc1,
+     movie_companies AS mc2,
+     movie_info_idx AS mi_idx1,
+     movie_info_idx AS mi_idx2,
+     movie_link AS ml,
+     title AS t1,
+     title AS t2
+WHERE cn1.country_code != '[us]'
+  AND it1.info = 'rating'
+  AND it2.info = 'rating'
+  AND kt1.kind IN ('tv series',
+                   'episode')
+  AND kt2.kind IN ('tv series',
+                   'episode')
+  AND lt.link IN ('sequel',
+                  'follows',
+                  'followed by')
+  AND mi_idx2.info < '3.5'
+  AND t2.production_year BETWEEN 2000 AND 2010
+  AND lt.id = ml.link_type_id
+  AND t1.id = ml.movie_id
+  AND t2.id = ml.linked_movie_id
+  AND it1.id = mi_idx1.info_type_id
+  AND t1.id = mi_idx1.movie_id
+  AND kt1.id = t1.kind_id
+  AND cn1.id = mc1.company_id
+  AND t1.id = mc1.movie_id
+  AND ml.movie_id = mi_idx1.movie_id
+  AND ml.movie_id = mc1.movie_id
+  AND mi_idx1.movie_id = mc1.movie_id
+  AND it2.id = mi_idx2.info_type_id
+  AND t2.id = mi_idx2.movie_id
+  AND kt2.id = t2.kind_id
+  AND cn2.id = mc2.company_id
+  AND t2.id = mc2.movie_id
+  AND ml.linked_movie_id = mi_idx2.movie_id
+  AND ml.linked_movie_id = mc2.movie_id
+  AND mi_idx2.movie_id = mc2.movie_id;
+
+result sql_benchmarks/imdb/results/33c.csv
+
+cleanup sql_benchmarks/imdb/init/cleanup.sql
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/init/cleanup.sql b/benchmarks/sql_benchmarks/imdb/init/cleanup.sql
new file mode 100644
index 0000000000..5ec8696caa
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/init/cleanup.sql
@@ -0,0 +1,41 @@
+DROP TABLE IF EXISTS aka_name;
+
+DROP TABLE IF EXISTS aka_title;
+
+DROP TABLE IF EXISTS cast_info;
+
+DROP TABLE IF EXISTS char_name;
+
+DROP TABLE IF EXISTS comp_cast_type;
+
+DROP TABLE IF EXISTS company_name;
+
+DROP TABLE IF EXISTS company_type;
+
+DROP TABLE IF EXISTS complete_cast;
+
+DROP TABLE IF EXISTS info_type;
+
+DROP TABLE IF EXISTS keyword;
+
+DROP TABLE IF EXISTS kind_type;
+
+DROP TABLE IF EXISTS link_type;
+
+DROP TABLE IF EXISTS movie_companies;
+
+DROP TABLE IF EXISTS movie_info;
+
+DROP TABLE IF EXISTS movie_info_idx;
+
+DROP TABLE IF EXISTS movie_keyword;
+
+DROP TABLE IF EXISTS movie_link;
+
+DROP TABLE IF EXISTS name;
+
+DROP TABLE IF EXISTS person_info;
+
+DROP TABLE IF EXISTS role_type;
+
+DROP TABLE IF EXISTS title;
\ No newline at end of file
diff --git a/benchmarks/sql_benchmarks/imdb/init/load_csv.sql b/benchmarks/sql_benchmarks/imdb/init/load_csv.sql
new file mode 100644
index 0000000000..02e8867388
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/init/load_csv.sql
@@ -0,0 +1,170 @@
+CREATE EXTERNAL TABLE aka_name (
+    id integer unsigned NOT NULL,
+    person_id integer NOT NULL,
+    name varchar(218) NOT NULL,
+    imdb_index varchar(12),
+    name_pcode_cf varchar(5),
+    name_pcode_nf varchar(5),
+    surname_pcode varchar(5),
+    md5sum varchar(32)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/aka_name.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE aka_title (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    title varchar(553) NOT NULL,
+    imdb_index varchar(12),
+    kind_id integer NOT NULL,
+    production_year integer,
+    phonetic_code varchar(5),
+    episode_of_id integer,
+    season_nr integer,
+    episode_nr integer,
+    note varchar(72),
+    md5sum varchar(32)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/aka_title.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE cast_info (
+    id integer unsigned NOT NULL,
+    person_id integer NOT NULL,
+    movie_id integer NOT NULL,
+    person_role_id integer,
+    note varchar(992),
+    nr_order integer,
+    role_id integer NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/cast_info.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE char_name (
+    id integer unsigned NOT NULL,
+    name varchar(478) NOT NULL,
+    imdb_index varchar(12),
+    imdb_id integer,
+    name_pcode_nf varchar(5),
+    surname_pcode varchar(5),
+    md5sum varchar(32)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/char_name.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE comp_cast_type (
+    id integer unsigned NOT NULL,
+    kind varchar(32) NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/comp_cast_type.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE company_name (
+    id integer unsigned NOT NULL,
+    name varchar(200) NOT NULL,
+    country_code varchar(255),
+    imdb_id integer,
+    name_pcode_nf varchar(5),
+    name_pcode_sf varchar(5),
+    md5sum varchar(32)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/company_name.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE company_type (
+    id integer unsigned NOT NULL,
+    kind varchar(32) NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/company_type.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE complete_cast (
+    id integer unsigned NOT NULL,
+    movie_id integer,
+    subject_id integer NOT NULL,
+    status_id integer NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/complete_cast.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE info_type (
+    id integer unsigned NOT NULL,
+    info varchar(32) NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/info_type.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE keyword (
+    id integer unsigned NOT NULL,
+    keyword varchar(74) NOT NULL,
+    phonetic_code varchar(5)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/keyword.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE kind_type (
+    id integer unsigned NOT NULL,
+    kind varchar(15) NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/kind_type.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE link_type (
+    id integer unsigned NOT NULL,
+    link varchar(32) NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/link_type.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE movie_companies (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    company_id integer NOT NULL,
+    company_type_id integer NOT NULL,
+    note varchar(208)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/movie_companies.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE movie_info (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    info_type_id integer NOT NULL,
+    info varchar(8000) NOT NULL,
+    note varchar(387)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/movie_info.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE movie_info_idx (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    info_type_id integer NOT NULL,
+    info varchar(10) NOT NULL,
+    note varchar(1)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/movie_info_idx.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE movie_keyword (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    keyword_id integer NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/movie_keyword.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE movie_link (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    linked_movie_id integer NOT NULL,
+    link_type_id integer NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/movie_link.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE name (
+    id integer unsigned NOT NULL,
+    name varchar(106) NOT NULL,
+    imdb_index varchar(12),
+    imdb_id integer,
+    gender varchar(1),
+    name_pcode_cf varchar(5),
+    name_pcode_nf varchar(5),
+    surname_pcode varchar(5),
+    md5sum varchar(32)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/name.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE person_info (
+    id integer unsigned NOT NULL,
+    person_id integer NOT NULL,
+    info_type_id integer NOT NULL,
+    info text NOT NULL,
+    note varchar(430)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/person_info.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE role_type (
+    id integer unsigned NOT NULL,
+    role varchar(32) NOT NULL
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/role_type.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
+
+CREATE EXTERNAL TABLE title (
+    id integer unsigned NOT NULL,
+    title varchar(334) NOT NULL,
+    imdb_index varchar(12),
+    kind_id integer NOT NULL,
+    production_year integer,
+    imdb_id integer,
+    phonetic_code varchar(5),
+    episode_of_id integer,
+    season_nr integer,
+    episode_nr integer,
+    series_years varchar(49),
+    md5sum varchar(32)
+) STORED AS CSV LOCATION '${DATA_DIR:-data}/imdb/title.csv' OPTIONS ('has_header' 'false', 'format.delimiter' ',', 'format.escape' '\');
diff --git a/benchmarks/sql_benchmarks/imdb/init/load_parquet.sql b/benchmarks/sql_benchmarks/imdb/init/load_parquet.sql
new file mode 100644
index 0000000000..1c1d28b243
--- /dev/null
+++ b/benchmarks/sql_benchmarks/imdb/init/load_parquet.sql
@@ -0,0 +1,170 @@
+CREATE EXTERNAL TABLE aka_name (
+    id integer unsigned NOT NULL,
+    person_id integer NOT NULL,
+    name varchar(218) NOT NULL,
+    imdb_index varchar(12),
+    name_pcode_cf varchar(5),
+    name_pcode_nf varchar(5),
+    surname_pcode varchar(5),
+    md5sum varchar(32)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/aka_name.parquet';
+
+CREATE EXTERNAL TABLE aka_title (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    title varchar(553) NOT NULL,
+    imdb_index varchar(12),
+    kind_id integer NOT NULL,
+    production_year integer,
+    phonetic_code varchar(5),
+    episode_of_id integer,
+    season_nr integer,
+    episode_nr integer,
+    note varchar(72),
+    md5sum varchar(32)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/aka_title.parquet';
+
+CREATE EXTERNAL TABLE cast_info (
+    id integer unsigned NOT NULL,
+    person_id integer NOT NULL,
+    movie_id integer NOT NULL,
+    person_role_id integer,
+    note varchar(992),
+    nr_order integer,
+    role_id integer NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/cast_info.parquet';
+
+CREATE EXTERNAL TABLE char_name (
+    id integer unsigned NOT NULL,
+    name varchar(478) NOT NULL,
+    imdb_index varchar(12),
+    imdb_id integer,
+    name_pcode_nf varchar(5),
+    surname_pcode varchar(5),
+    md5sum varchar(32)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/char_name.parquet';
+
+CREATE EXTERNAL TABLE comp_cast_type (
+    id integer unsigned NOT NULL,
+    kind varchar(32) NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/comp_cast_type.parquet';
+
+CREATE EXTERNAL TABLE company_name (
+    id integer unsigned NOT NULL,
+    name varchar(200) NOT NULL,
+    country_code varchar(255),
+    imdb_id integer,
+    name_pcode_nf varchar(5),
+    name_pcode_sf varchar(5),
+    md5sum varchar(32)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/company_name.parquet';
+
+CREATE EXTERNAL TABLE company_type (
+    id integer unsigned NOT NULL,
+    kind varchar(32) NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/company_type.parquet';
+
+CREATE EXTERNAL TABLE complete_cast (
+    id integer unsigned NOT NULL,
+    movie_id integer,
+    subject_id integer NOT NULL,
+    status_id integer NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/complete_cast.parquet';
+
+CREATE EXTERNAL TABLE info_type (
+    id integer unsigned NOT NULL,
+    info varchar(32) NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/info_type.parquet';
+
+CREATE EXTERNAL TABLE keyword (
+    id integer unsigned NOT NULL,
+    keyword varchar(74) NOT NULL,
+    phonetic_code varchar(5)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/keyword.parquet';
+
+CREATE EXTERNAL TABLE kind_type (
+    id integer unsigned NOT NULL,
+    kind varchar(15) NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/kind_type.parquet';
+
+CREATE EXTERNAL TABLE link_type (
+    id integer unsigned NOT NULL,
+    link varchar(32) NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/link_type.parquet';
+
+CREATE EXTERNAL TABLE movie_companies (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    company_id integer NOT NULL,
+    company_type_id integer NOT NULL,
+    note varchar(208)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/movie_companies.parquet';
+
+CREATE EXTERNAL TABLE movie_info (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    info_type_id integer NOT NULL,
+    info varchar(8000) NOT NULL,
+    note varchar(387)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/movie_info.parquet';
+
+CREATE EXTERNAL TABLE movie_info_idx (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    info_type_id integer NOT NULL,
+    info varchar(10) NOT NULL,
+    note varchar(1)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/movie_info_idx.parquet';
+
+CREATE EXTERNAL TABLE movie_keyword (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    keyword_id integer NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/movie_keyword.parquet';
+
+CREATE EXTERNAL TABLE movie_link (
+    id integer unsigned NOT NULL,
+    movie_id integer NOT NULL,
+    linked_movie_id integer NOT NULL,
+    link_type_id integer NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/movie_link.parquet';
+
+CREATE EXTERNAL TABLE name (
+    id integer unsigned NOT NULL,
+    name varchar(106) NOT NULL,
+    imdb_index varchar(12),
+    imdb_id integer,
+    gender varchar(1),
+    name_pcode_cf varchar(5),
+    name_pcode_nf varchar(5),
+    surname_pcode varchar(5),
+    md5sum varchar(32)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/name.parquet';
+
+CREATE EXTERNAL TABLE person_info (
+    id integer unsigned NOT NULL,
+    person_id integer NOT NULL,
+    info_type_id integer NOT NULL,
+    info text NOT NULL,
+    note varchar(430)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/person_info.parquet';
+
+CREATE EXTERNAL TABLE role_type (
+    id integer unsigned NOT NULL,
+    role varchar(32) NOT NULL
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/role_type.parquet';
+
+CREATE EXTERNAL TABLE title (
+    id integer unsigned NOT NULL,
+    title varchar(334) NOT NULL,
+    imdb_index varchar(12),
+    kind_id integer NOT NULL,
+    production_year integer,
+    imdb_id integer,
+    phonetic_code varchar(5),
+    episode_of_id integer,
+    season_nr integer,
+    episode_nr integer,
+    series_years varchar(49),
+    md5sum varchar(32)
+) STORED AS PARQUET LOCATION '${DATA_DIR:-data}/imdb/title.parquet';


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org