# Correlated subquery cases derived from OpenStack Compute (nova):
#   https://github.com/openstack/nova

exec-ddl
create table flavors
(
	id Integer primary key,
	name String(255) not null,
	memory_mb Integer not null,
	vcpus Integer not null,
	root_gb Integer,
	ephemeral_gb Integer,
	flavorid String(255) not null,
	swap Integer default 0 not null,
	rxtx_factor Float default 1,
	vcpu_weight Integer,
	disabled Boolean default false,
	is_public Boolean default true,
	description Text,
	created_at Timestamp,
	updated_at Timestamp,
	unique (flavorid),
	unique (name)
)
----
TABLE flavors
 ├── id int not null
 ├── name string not null
 ├── memory_mb int not null
 ├── vcpus int not null
 ├── root_gb int
 ├── ephemeral_gb int
 ├── flavorid string not null
 ├── swap int not null
 ├── rxtx_factor float
 ├── vcpu_weight int
 ├── disabled bool
 ├── is_public bool
 ├── description string
 ├── created_at timestamp
 ├── updated_at timestamp
 ├── INDEX primary
 │    └── id int not null
 ├── INDEX secondary
 │    ├── flavorid string not null
 │    └── id int not null (storing)
 └── INDEX secondary
      ├── name string not null
      └── id int not null (storing)

exec-ddl
create table flavor_projects
(
    id Integer primary key,
    flavor_id Integer not null,
    project_id String(255) not null,
	created_at Timestamp,
	updated_at Timestamp,
    foreign key (flavor_id) references flavors (id),
    unique (flavor_id, project_id)
)
----
TABLE flavor_projects
 ├── id int not null
 ├── flavor_id int not null
 ├── project_id string not null
 ├── created_at timestamp
 ├── updated_at timestamp
 ├── INDEX primary
 │    └── id int not null
 ├── INDEX secondary
 │    ├── flavor_id int not null
 │    ├── project_id string not null
 │    └── id int not null (storing)
 └── FOREIGN KEY (flavor_id) REFERENCES t.public.flavors (id)

exec-ddl
create table flavor_extra_specs
(
    id Integer primary key,
    key String(255) not null,
    value String(255),
    flavor_id Integer not null,
	created_at Timestamp,
	updated_at Timestamp,
    foreign key (flavor_id) references flavors (id),
    unique index flavor_extra_specs_flavor_id_key_idx (flavor_id, key)
)
----
TABLE flavor_extra_specs
 ├── id int not null
 ├── key string not null
 ├── value string
 ├── flavor_id int not null
 ├── created_at timestamp
 ├── updated_at timestamp
 ├── INDEX primary
 │    └── id int not null
 ├── INDEX flavor_extra_specs_flavor_id_key_idx
 │    ├── flavor_id int not null
 │    ├── key string not null
 │    └── id int not null (storing)
 └── FOREIGN KEY (flavor_id) REFERENCES t.public.flavors (id)

exec-ddl
create table instance_types
(
    id Integer primary key,
    name String(255),
    memory_mb Integer not null,
    vcpus Integer not null,
    root_gb Integer,
    ephemeral_gb Integer,
    flavorid String(255),
    swap Integer not null default 0,
    rxtx_factor Float default 1,
    vcpu_weight Integer,
    disabled Boolean default False,
    is_public Boolean default True,
    deleted Boolean,
	deleted_at Timestamp,
	created_at Timestamp,
	updated_at Timestamp,
    unique (flavorid, deleted),
    unique (name, deleted)
)
----
TABLE instance_types
 ├── id int not null
 ├── name string
 ├── memory_mb int not null
 ├── vcpus int not null
 ├── root_gb int
 ├── ephemeral_gb int
 ├── flavorid string
 ├── swap int not null
 ├── rxtx_factor float
 ├── vcpu_weight int
 ├── disabled bool
 ├── is_public bool
 ├── deleted bool
 ├── deleted_at timestamp
 ├── created_at timestamp
 ├── updated_at timestamp
 ├── INDEX primary
 │    └── id int not null
 ├── INDEX secondary
 │    ├── flavorid string
 │    ├── deleted bool
 │    └── id int not null (storing)
 └── INDEX secondary
      ├── name string
      ├── deleted bool
      └── id int not null (storing)

exec-ddl
create table instance_type_projects
(
    id Integer primary key,
    instance_type_id Integer not null,
    project_id String(255),
    deleted Boolean,
	deleted_at Timestamp,
	created_at Timestamp,
	updated_at Timestamp,
    foreign key (instance_type_id) references instance_types (id),
    unique (instance_type_id, project_id, deleted)
)
----
TABLE instance_type_projects
 ├── id int not null
 ├── instance_type_id int not null
 ├── project_id string
 ├── deleted bool
 ├── deleted_at timestamp
 ├── created_at timestamp
 ├── updated_at timestamp
 ├── INDEX primary
 │    └── id int not null
 ├── INDEX secondary
 │    ├── instance_type_id int not null
 │    ├── project_id string
 │    ├── deleted bool
 │    └── id int not null (storing)
 └── FOREIGN KEY (instance_type_id) REFERENCES t.public.instance_types (id)

exec-ddl
create table instance_type_extra_specs
(
    id Integer primary key,
    key String(255),
    value String(255),
    instance_type_id Integer not null,
    deleted Boolean,
	deleted_at Timestamp,
	created_at Timestamp,
	updated_at Timestamp,
    foreign key (instance_type_id) references instance_types (id),
    index instance_type_extra_specs_instance_type_id_key_idx (instance_type_id, key),
    unique (instance_type_id, key, deleted)
)
----
TABLE instance_type_extra_specs
 ├── id int not null
 ├── key string
 ├── value string
 ├── instance_type_id int not null
 ├── deleted bool
 ├── deleted_at timestamp
 ├── created_at timestamp
 ├── updated_at timestamp
 ├── INDEX primary
 │    └── id int not null
 ├── INDEX instance_type_extra_specs_instance_type_id_key_idx
 │    ├── instance_type_id int not null
 │    ├── key string
 │    └── id int not null
 ├── INDEX secondary
 │    ├── instance_type_id int not null
 │    ├── key string
 │    ├── deleted bool
 │    └── id int not null (storing)
 └── FOREIGN KEY (instance_type_id) REFERENCES t.public.instance_types (id)

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public
      from flavors
      where (flavors.is_public = true
             or (exists (select 1
                         from flavor_projects
                         where flavor_projects.flavor_id = flavors.id
                               and flavor_projects.project_id = $1)))
            and flavors.flavorid = $2
      order by flavors.id asc
      offset $3 rows
      limit $4)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
order by anon_1.flavors_id asc
----
project
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) flavor_extra_specs_1_created_at:29(timestamp) flavor_extra_specs_1_updated_at:30(timestamp) flavor_extra_specs_1_id:25(int) flavor_extra_specs_1_key:26(string) flavor_extra_specs_1_value:27(string) flavor_extra_specs_1_flavor_id:28(int)
 ├── side-effects, has-placeholder
 ├── key: (1,25)
 ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
 ├── ordering: +1
 └── left-join (merge)
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      ├── left ordering: +1
      ├── right ordering: +28
      ├── side-effects, has-placeholder
      ├── key: (1,25)
      ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
      ├── ordering: +1
      ├── limit
      │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    ├── internal-ordering: +1
      │    ├── side-effects, has-placeholder
      │    ├── key: (1)
      │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    ├── ordering: +1
      │    ├── offset
      │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    ├── internal-ordering: +1
      │    │    ├── has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    ├── ordering: +1
      │    │    ├── select
      │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    ├── ordering: +1
      │    │    │    ├── group-by
      │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    │    ├── grouping columns: flavors.id:1(int!null)
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    ├── ordering: +1
      │    │    │    │    ├── left-join (merge)
      │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:22(bool)
      │    │    │    │    │    ├── left ordering: +1
      │    │    │    │    │    ├── right ordering: +17
      │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), ()~~>(22)
      │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    ├── select
      │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    ├── scan flavors
      │    │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    │    └── ordering: +1
      │    │    │    │    │    │    └── filters
      │    │    │    │    │    │         └── flavorid = $2 [type=bool, outer=(7), constraints=(/7: (/NULL - ])]
      │    │    │    │    │    ├── project
      │    │    │    │    │    │    ├── columns: true:22(bool!null) flavor_projects.flavor_id:17(int!null)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── fd: ()-->(22)
      │    │    │    │    │    │    ├── ordering: +17 opt(22) [actual: +17]
      │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    ├── ordering: +17
      │    │    │    │    │    │    │    ├── scan flavor_projects@secondary
      │    │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    │    └── ordering: +17
      │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │         └── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
      │    │    │    │    │    │    └── projections
      │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │    │    └── filters (true)
      │    │    │    │    └── aggregations
      │    │    │    │         ├── const-not-null-agg [type=bool, outer=(22)]
      │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │    └── variable: flavors.created_at [type=timestamp]
      │    │    │    │         └── const-agg [type=timestamp, outer=(15)]
      │    │    │    │              └── variable: flavors.updated_at [type=timestamp]
      │    │    │    └── filters
      │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,23)]
      │    │    └── placeholder: $3 [type=int]
      │    └── placeholder: $4 [type=int]
      ├── sort
      │    ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      │    ├── key: (25)
      │    ├── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
      │    ├── ordering: +28
      │    └── scan flavor_extra_specs_1
      │         ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      │         ├── key: (25)
      │         └── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
      └── filters (true)

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public
      from flavors
      where (flavors.is_public = true
             or (exists (select 1
                         from flavor_projects
                         where flavor_projects.flavor_id = flavors.id
                               and flavor_projects.project_id = $1)))
            and flavors.disabled = false
            and (flavors.is_public = true
                 or (exists (select 1
                             from flavor_projects
                             where flavor_projects.flavor_id = flavors.id
                                   and flavor_projects.project_id = $2)))
      order by flavors.flavorid asc, flavors.id asc
      offset $3 rows
      limit $4)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
order by anon_1.flavors_flavorid asc, anon_1.flavors_id asc
----
sort
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) flavor_extra_specs_1_created_at:38(timestamp) flavor_extra_specs_1_updated_at:39(timestamp) flavor_extra_specs_1_id:34(int) flavor_extra_specs_1_key:35(string) flavor_extra_specs_1_value:36(string) flavor_extra_specs_1_flavor_id:37(int)
 ├── side-effects, has-placeholder
 ├── key: (1,34)
 ├── fd: ()-->(11), (1)-->(2-10,12,14,15), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15), (34)-->(35-39), (35,37)-->(34,36,38,39)
 ├── ordering: +7 opt(11) [actual: +7]
 └── project
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_extra_specs_1.id:34(int) key:35(string) value:36(string) flavor_extra_specs_1.flavor_id:37(int) flavor_extra_specs_1.created_at:38(timestamp) flavor_extra_specs_1.updated_at:39(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,34)
      ├── fd: ()-->(11), (1)-->(2-10,12,14,15), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15), (34)-->(35-39), (35,37)-->(34,36,38,39)
      └── right-join
           ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:32(bool) flavor_extra_specs_1.id:34(int) key:35(string) value:36(string) flavor_extra_specs_1.flavor_id:37(int) flavor_extra_specs_1.created_at:38(timestamp) flavor_extra_specs_1.updated_at:39(timestamp)
           ├── side-effects, has-placeholder
           ├── key: (1,34)
           ├── fd: ()-->(11), (1)-->(2-10,12,14,15,32), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15), (34)-->(35-39), (35,37)-->(34,36,38,39)
           ├── scan flavor_extra_specs_1
           │    ├── columns: flavor_extra_specs_1.id:34(int!null) key:35(string!null) value:36(string) flavor_extra_specs_1.flavor_id:37(int!null) flavor_extra_specs_1.created_at:38(timestamp) flavor_extra_specs_1.updated_at:39(timestamp)
           │    ├── key: (34)
           │    └── fd: (34)-->(35-39), (35,37)-->(34,36,38,39)
           ├── limit
           │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:32(bool)
           │    ├── internal-ordering: +7 opt(11)
           │    ├── side-effects, has-placeholder
           │    ├── key: (1)
           │    ├── fd: ()-->(11), (1)-->(2-10,12,14,15,32), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    ├── offset
           │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:32(bool)
           │    │    ├── internal-ordering: +7 opt(11)
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: ()-->(11), (1)-->(2-10,12,14,15,32), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    │    ├── ordering: +7 opt(11) [actual: +7]
           │    │    ├── sort
           │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:32(bool)
           │    │    │    ├── has-placeholder
           │    │    │    ├── key: (1)
           │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12,14,15,32), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    │    │    ├── ordering: +7 opt(11) [actual: +7]
           │    │    │    └── select
           │    │    │         ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:32(bool)
           │    │    │         ├── has-placeholder
           │    │    │         ├── key: (1)
           │    │    │         ├── fd: ()-->(11), (1)-->(2-10,12,14,15,32), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    │    │         ├── group-by
           │    │    │         │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:32(bool)
           │    │    │         │    ├── grouping columns: flavors.id:1(int!null)
           │    │    │         │    ├── internal-ordering: +1 opt(11)
           │    │    │         │    ├── has-placeholder
           │    │    │         │    ├── key: (1)
           │    │    │         │    ├── fd: ()-->(11), (1)-->(2-12,14,15,32), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    │    │         │    ├── left-join (merge)
           │    │    │         │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:23(int) true_agg:29(bool) true:31(bool)
           │    │    │         │    │    ├── left ordering: +1
           │    │    │         │    │    ├── right ordering: +23
           │    │    │         │    │    ├── has-placeholder
           │    │    │         │    │    ├── fd: ()-->(11), (1)-->(2-10,12,14,15,29), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15), ()~~>(31)
           │    │    │         │    │    ├── ordering: +1 opt(11) [actual: +1]
           │    │    │         │    │    ├── select
           │    │    │         │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:29(bool)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── key: (1)
           │    │    │         │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12,14,15,29), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    │    │         │    │    │    ├── ordering: +1 opt(11) [actual: +1]
           │    │    │         │    │    │    ├── group-by
           │    │    │         │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:29(bool)
           │    │    │         │    │    │    │    ├── grouping columns: flavors.id:1(int!null)
           │    │    │         │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    ├── key: (1)
           │    │    │         │    │    │    │    ├── fd: ()-->(11), (1)-->(2-12,14,15,29), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    │    │         │    │    │    │    ├── ordering: +1 opt(11) [actual: +1]
           │    │    │         │    │    │    │    ├── left-join (merge)
           │    │    │         │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool!null) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:28(bool)
           │    │    │         │    │    │    │    │    ├── left ordering: +1
           │    │    │         │    │    │    │    │    ├── right ordering: +17
           │    │    │         │    │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12,14,15), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15), ()~~>(28)
           │    │    │         │    │    │    │    │    ├── ordering: +1 opt(11) [actual: +1]
           │    │    │         │    │    │    │    │    ├── select
           │    │    │         │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool!null) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
           │    │    │         │    │    │    │    │    │    ├── key: (1)
           │    │    │         │    │    │    │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12,14,15), (7)-->(1-6,8-10,12,14,15), (2)-->(1,3-10,12,14,15)
           │    │    │         │    │    │    │    │    │    ├── ordering: +1 opt(11) [actual: +1]
           │    │    │         │    │    │    │    │    │    ├── scan flavors
           │    │    │         │    │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
           │    │    │         │    │    │    │    │    │    │    ├── key: (1)
           │    │    │         │    │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         │    │    │    │    │    │    │    └── ordering: +1 opt(11) [actual: +1]
           │    │    │         │    │    │    │    │    │    └── filters
           │    │    │         │    │    │    │    │    │         └── disabled = false [type=bool, outer=(11), constraints=(/11: [/false - /false]; tight), fd=()-->(11)]
           │    │    │         │    │    │    │    │    ├── project
           │    │    │         │    │    │    │    │    │    ├── columns: true:28(bool!null) flavor_projects.flavor_id:17(int!null)
           │    │    │         │    │    │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    │    │    ├── fd: ()-->(28)
           │    │    │         │    │    │    │    │    │    ├── ordering: +17 opt(28) [actual: +17]
           │    │    │         │    │    │    │    │    │    ├── select
           │    │    │         │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │    │         │    │    │    │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    │    │    │    ├── key: (17,18)
           │    │    │         │    │    │    │    │    │    │    ├── ordering: +17
           │    │    │         │    │    │    │    │    │    │    ├── scan flavor_projects@secondary
           │    │    │         │    │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │    │         │    │    │    │    │    │    │    │    ├── key: (17,18)
           │    │    │         │    │    │    │    │    │    │    │    └── ordering: +17
           │    │    │         │    │    │    │    │    │    │    └── filters
           │    │    │         │    │    │    │    │    │    │         └── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
           │    │    │         │    │    │    │    │    │    └── projections
           │    │    │         │    │    │    │    │    │         └── true [type=bool]
           │    │    │         │    │    │    │    │    └── filters (true)
           │    │    │         │    │    │    │    └── aggregations
           │    │    │         │    │    │    │         ├── const-not-null-agg [type=bool, outer=(28)]
           │    │    │         │    │    │    │         │    └── variable: true [type=bool]
           │    │    │         │    │    │    │         ├── const-agg [type=string, outer=(2)]
           │    │    │         │    │    │    │         │    └── variable: name [type=string]
           │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(3)]
           │    │    │         │    │    │    │         │    └── variable: memory_mb [type=int]
           │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(4)]
           │    │    │         │    │    │    │         │    └── variable: vcpus [type=int]
           │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(5)]
           │    │    │         │    │    │    │         │    └── variable: root_gb [type=int]
           │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(6)]
           │    │    │         │    │    │    │         │    └── variable: ephemeral_gb [type=int]
           │    │    │         │    │    │    │         ├── const-agg [type=string, outer=(7)]
           │    │    │         │    │    │    │         │    └── variable: flavorid [type=string]
           │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(8)]
           │    │    │         │    │    │    │         │    └── variable: swap [type=int]
           │    │    │         │    │    │    │         ├── const-agg [type=float, outer=(9)]
           │    │    │         │    │    │    │         │    └── variable: rxtx_factor [type=float]
           │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(10)]
           │    │    │         │    │    │    │         │    └── variable: vcpu_weight [type=int]
           │    │    │         │    │    │    │         ├── const-agg [type=bool, outer=(11)]
           │    │    │         │    │    │    │         │    └── variable: disabled [type=bool]
           │    │    │         │    │    │    │         ├── const-agg [type=bool, outer=(12)]
           │    │    │         │    │    │    │         │    └── variable: is_public [type=bool]
           │    │    │         │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
           │    │    │         │    │    │    │         │    └── variable: flavors.created_at [type=timestamp]
           │    │    │         │    │    │    │         └── const-agg [type=timestamp, outer=(15)]
           │    │    │         │    │    │    │              └── variable: flavors.updated_at [type=timestamp]
           │    │    │         │    │    │    └── filters
           │    │    │         │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,29)]
           │    │    │         │    │    ├── project
           │    │    │         │    │    │    ├── columns: true:31(bool!null) flavor_projects.flavor_id:23(int!null)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── fd: ()-->(31)
           │    │    │         │    │    │    ├── ordering: +23 opt(31) [actual: +23]
           │    │    │         │    │    │    ├── select
           │    │    │         │    │    │    │    ├── columns: flavor_projects.flavor_id:23(int!null) project_id:24(string!null)
           │    │    │         │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    ├── key: (23,24)
           │    │    │         │    │    │    │    ├── ordering: +23
           │    │    │         │    │    │    │    ├── scan flavor_projects@secondary
           │    │    │         │    │    │    │    │    ├── columns: flavor_projects.flavor_id:23(int!null) project_id:24(string!null)
           │    │    │         │    │    │    │    │    ├── key: (23,24)
           │    │    │         │    │    │    │    │    └── ordering: +23
           │    │    │         │    │    │    │    └── filters
           │    │    │         │    │    │    │         └── project_id = $2 [type=bool, outer=(24), constraints=(/24: (/NULL - ])]
           │    │    │         │    │    │    └── projections
           │    │    │         │    │    │         └── true [type=bool]
           │    │    │         │    │    └── filters (true)
           │    │    │         │    └── aggregations
           │    │    │         │         ├── const-not-null-agg [type=bool, outer=(31)]
           │    │    │         │         │    └── variable: true [type=bool]
           │    │    │         │         ├── const-agg [type=string, outer=(2)]
           │    │    │         │         │    └── variable: name [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(3)]
           │    │    │         │         │    └── variable: memory_mb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(4)]
           │    │    │         │         │    └── variable: vcpus [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(5)]
           │    │    │         │         │    └── variable: root_gb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(6)]
           │    │    │         │         │    └── variable: ephemeral_gb [type=int]
           │    │    │         │         ├── const-agg [type=string, outer=(7)]
           │    │    │         │         │    └── variable: flavorid [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(8)]
           │    │    │         │         │    └── variable: swap [type=int]
           │    │    │         │         ├── const-agg [type=float, outer=(9)]
           │    │    │         │         │    └── variable: rxtx_factor [type=float]
           │    │    │         │         ├── const-agg [type=int, outer=(10)]
           │    │    │         │         │    └── variable: vcpu_weight [type=int]
           │    │    │         │         ├── const-agg [type=bool, outer=(11)]
           │    │    │         │         │    └── variable: disabled [type=bool]
           │    │    │         │         ├── const-agg [type=bool, outer=(12)]
           │    │    │         │         │    └── variable: is_public [type=bool]
           │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
           │    │    │         │         │    └── variable: flavors.created_at [type=timestamp]
           │    │    │         │         └── const-agg [type=timestamp, outer=(15)]
           │    │    │         │              └── variable: flavors.updated_at [type=timestamp]
           │    │    │         └── filters
           │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,32)]
           │    │    └── placeholder: $3 [type=int]
           │    └── placeholder: $4 [type=int]
           └── filters
                └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,37), constraints=(/1: (/NULL - ]; /37: (/NULL - ]), fd=(1)==(37), (37)==(1)]

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.deleted = $3
                                   and instance_type_projects.project_id = $4)))
      order by instance_types.flavorid asc, instance_types.id asc
      offset $5 rows
      limit $6)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $7
order by anon_1.instance_types_flavorid asc,
         anon_1.instance_types_id asc
----
sort
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:34(timestamp) instance_type_extra_specs_1_updated_at:35(timestamp) instance_type_extra_specs_1_deleted_at:33(timestamp) instance_type_extra_specs_1_deleted:32(bool) instance_type_extra_specs_1_id:28(int) instance_type_extra_specs_1_key:29(string) instance_type_extra_specs_1_value:30(string) instance_type_extra_specs_1_instance_type_id:31(int)
 ├── side-effects, has-placeholder
 ├── key: (1,28)
 ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
 ├── ordering: +7,+1
 └── project
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,28)
      ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
      └── right-join
           ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
           ├── side-effects, has-placeholder
           ├── key: (1,28)
           ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
           ├── select
           │    ├── columns: instance_type_extra_specs_1.id:28(int!null) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int!null) instance_type_extra_specs_1.deleted:32(bool!null) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
           │    ├── has-placeholder
           │    ├── key: (28)
           │    ├── fd: (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
           │    ├── scan instance_type_extra_specs_1
           │    │    ├── columns: instance_type_extra_specs_1.id:28(int!null) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int!null) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
           │    │    ├── key: (28)
           │    │    └── fd: (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
           │    └── filters
           │         └── instance_type_extra_specs_1.deleted = $7 [type=bool, outer=(32), constraints=(/32: (/NULL - ])]
           ├── limit
           │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    ├── internal-ordering: +7,+1
           │    ├── side-effects, has-placeholder
           │    ├── key: (1)
           │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    ├── offset
           │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    ├── internal-ordering: +7,+1
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    ├── ordering: +7,+1
           │    │    ├── sort
           │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    │    ├── has-placeholder
           │    │    │    ├── key: (1)
           │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │    ├── ordering: +7,+1
           │    │    │    └── select
           │    │    │         ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    │         ├── has-placeholder
           │    │    │         ├── key: (1)
           │    │    │         ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         ├── group-by
           │    │    │         │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    │         │    ├── grouping columns: instance_types.id:1(int!null)
           │    │    │         │    ├── internal-ordering: +1
           │    │    │         │    ├── has-placeholder
           │    │    │         │    ├── key: (1)
           │    │    │         │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         │    ├── left-join (merge)
           │    │    │         │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:25(bool)
           │    │    │         │    │    ├── left ordering: +1
           │    │    │         │    │    ├── right ordering: +18
           │    │    │         │    │    ├── has-placeholder
           │    │    │         │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), ()~~>(25)
           │    │    │         │    │    ├── ordering: +1
           │    │    │         │    │    ├── select
           │    │    │         │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── key: (1)
           │    │    │         │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         │    │    │    ├── ordering: +1
           │    │    │         │    │    │    ├── scan instance_types
           │    │    │         │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
           │    │    │         │    │    │    │    ├── key: (1)
           │    │    │         │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         │    │    │    │    └── ordering: +1
           │    │    │         │    │    │    └── filters
           │    │    │         │    │    │         └── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
           │    │    │         │    │    ├── project
           │    │    │         │    │    │    ├── columns: true:25(bool!null) instance_type_projects.instance_type_id:18(int!null)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── fd: ()-->(25)
           │    │    │         │    │    │    ├── ordering: +18 opt(25) [actual: +18]
           │    │    │         │    │    │    ├── select
           │    │    │         │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
           │    │    │         │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    ├── key: (18-20)
           │    │    │         │    │    │    │    ├── ordering: +18
           │    │    │         │    │    │    │    ├── scan instance_type_projects@secondary
           │    │    │         │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
           │    │    │         │    │    │    │    │    ├── lax-key: (18-20)
           │    │    │         │    │    │    │    │    └── ordering: +18
           │    │    │         │    │    │    │    └── filters
           │    │    │         │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
           │    │    │         │    │    │    │         ├── instance_type_projects.deleted = $3 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
           │    │    │         │    │    │    │         └── project_id = $4 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
           │    │    │         │    │    │    └── projections
           │    │    │         │    │    │         └── true [type=bool]
           │    │    │         │    │    └── filters (true)
           │    │    │         │    └── aggregations
           │    │    │         │         ├── const-not-null-agg [type=bool, outer=(25)]
           │    │    │         │         │    └── variable: true [type=bool]
           │    │    │         │         ├── const-agg [type=string, outer=(2)]
           │    │    │         │         │    └── variable: name [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(3)]
           │    │    │         │         │    └── variable: memory_mb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(4)]
           │    │    │         │         │    └── variable: vcpus [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(5)]
           │    │    │         │         │    └── variable: root_gb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(6)]
           │    │    │         │         │    └── variable: ephemeral_gb [type=int]
           │    │    │         │         ├── const-agg [type=string, outer=(7)]
           │    │    │         │         │    └── variable: flavorid [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(8)]
           │    │    │         │         │    └── variable: swap [type=int]
           │    │    │         │         ├── const-agg [type=float, outer=(9)]
           │    │    │         │         │    └── variable: rxtx_factor [type=float]
           │    │    │         │         ├── const-agg [type=int, outer=(10)]
           │    │    │         │         │    └── variable: vcpu_weight [type=int]
           │    │    │         │         ├── const-agg [type=bool, outer=(11)]
           │    │    │         │         │    └── variable: disabled [type=bool]
           │    │    │         │         ├── const-agg [type=bool, outer=(12)]
           │    │    │         │         │    └── variable: is_public [type=bool]
           │    │    │         │         ├── const-agg [type=bool, outer=(13)]
           │    │    │         │         │    └── variable: instance_types.deleted [type=bool]
           │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
           │    │    │         │         │    └── variable: instance_types.deleted_at [type=timestamp]
           │    │    │         │         ├── const-agg [type=timestamp, outer=(15)]
           │    │    │         │         │    └── variable: instance_types.created_at [type=timestamp]
           │    │    │         │         └── const-agg [type=timestamp, outer=(16)]
           │    │    │         │              └── variable: instance_types.updated_at [type=timestamp]
           │    │    │         └── filters
           │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,26)]
           │    │    └── placeholder: $5 [type=int]
           │    └── placeholder: $6 [type=int]
           └── filters
                └── instance_type_extra_specs_1.instance_type_id = instance_types.id [type=bool, outer=(1,31), constraints=(/1: (/NULL - ]; /31: (/NULL - ]), fd=(1)==(31), (31)==(1)]

opt
select instance_types.created_at as instance_types_created_at,
       instance_types.updated_at as instance_types_updated_at,
       instance_types.deleted_at as instance_types_deleted_at,
       instance_types.deleted as instance_types_deleted,
       instance_types.id as instance_types_id,
       instance_types.name as instance_types_name,
       instance_types.memory_mb as instance_types_memory_mb,
       instance_types.vcpus as instance_types_vcpus,
       instance_types.root_gb as instance_types_root_gb,
       instance_types.ephemeral_gb as instance_types_ephemeral_gb,
       instance_types.flavorid as instance_types_flavorid,
       instance_types.swap as instance_types_swap,
       instance_types.rxtx_factor as instance_types_rxtx_factor,
       instance_types.vcpu_weight as instance_types_vcpu_weight,
       instance_types.disabled as instance_types_disabled,
       instance_types.is_public as instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from instance_types
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = instance_types.id
        and instance_type_extra_specs_1.deleted = $1
where instance_types.deleted = $2
      and (instance_types.is_public = true
           or (exists (select 1
                       from instance_type_projects
                       where instance_type_projects.instance_type_id = instance_types.id
                             and instance_type_projects.deleted = $3
                             and instance_type_projects.project_id = $4)))
order by instance_types.flavorid asc, instance_types.id asc
----
sort
 ├── columns: instance_types_created_at:15(timestamp) instance_types_updated_at:16(timestamp) instance_types_deleted_at:14(timestamp) instance_types_deleted:13(bool) instance_types_id:1(int!null) instance_types_name:2(string) instance_types_memory_mb:3(int) instance_types_vcpus:4(int) instance_types_root_gb:5(int) instance_types_ephemeral_gb:6(int) instance_types_flavorid:7(string) instance_types_swap:8(int) instance_types_rxtx_factor:9(float) instance_types_vcpu_weight:10(int) instance_types_disabled:11(bool) instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:23(timestamp) instance_type_extra_specs_1_updated_at:24(timestamp) instance_type_extra_specs_1_deleted_at:22(timestamp) instance_type_extra_specs_1_deleted:21(bool) instance_type_extra_specs_1_id:17(int) instance_type_extra_specs_1_key:18(string) instance_type_extra_specs_1_value:19(string) instance_type_extra_specs_1_instance_type_id:20(int)
 ├── has-placeholder
 ├── key: (1,17)
 ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (17)-->(18-24), (18,20,21)~~>(17,19,22-24)
 ├── ordering: +7,+1
 └── project
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_extra_specs_1.id:17(int) key:18(string) value:19(string) instance_type_extra_specs_1.instance_type_id:20(int) instance_type_extra_specs_1.deleted:21(bool) instance_type_extra_specs_1.deleted_at:22(timestamp) instance_type_extra_specs_1.created_at:23(timestamp) instance_type_extra_specs_1.updated_at:24(timestamp)
      ├── has-placeholder
      ├── key: (1,17)
      ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (17)-->(18-24), (18,20,21)~~>(17,19,22-24)
      └── right-join
           ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_extra_specs_1.id:17(int) key:18(string) value:19(string) instance_type_extra_specs_1.instance_type_id:20(int) instance_type_extra_specs_1.deleted:21(bool) instance_type_extra_specs_1.deleted_at:22(timestamp) instance_type_extra_specs_1.created_at:23(timestamp) instance_type_extra_specs_1.updated_at:24(timestamp) true_agg:34(bool)
           ├── has-placeholder
           ├── key: (1,17)
           ├── fd: (1)-->(2-16,34), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (17)-->(18-24), (18,20,21)~~>(17,19,22-24)
           ├── select
           │    ├── columns: instance_type_extra_specs_1.id:17(int!null) key:18(string) value:19(string) instance_type_extra_specs_1.instance_type_id:20(int!null) instance_type_extra_specs_1.deleted:21(bool!null) instance_type_extra_specs_1.deleted_at:22(timestamp) instance_type_extra_specs_1.created_at:23(timestamp) instance_type_extra_specs_1.updated_at:24(timestamp)
           │    ├── has-placeholder
           │    ├── key: (17)
           │    ├── fd: (17)-->(18-24), (18,20,21)~~>(17,19,22-24)
           │    ├── scan instance_type_extra_specs_1
           │    │    ├── columns: instance_type_extra_specs_1.id:17(int!null) key:18(string) value:19(string) instance_type_extra_specs_1.instance_type_id:20(int!null) instance_type_extra_specs_1.deleted:21(bool) instance_type_extra_specs_1.deleted_at:22(timestamp) instance_type_extra_specs_1.created_at:23(timestamp) instance_type_extra_specs_1.updated_at:24(timestamp)
           │    │    ├── key: (17)
           │    │    └── fd: (17)-->(18-24), (18,20,21)~~>(17,19,22-24)
           │    └── filters
           │         └── instance_type_extra_specs_1.deleted = $1 [type=bool, outer=(21), constraints=(/21: (/NULL - ])]
           ├── select
           │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:34(bool)
           │    ├── has-placeholder
           │    ├── key: (1)
           │    ├── fd: (1)-->(2-16,34), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    ├── group-by
           │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:34(bool)
           │    │    ├── grouping columns: instance_types.id:1(int!null)
           │    │    ├── internal-ordering: +1
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: (1)-->(2-16,34), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    ├── left-join (merge)
           │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:26(int) true:33(bool)
           │    │    │    ├── left ordering: +1
           │    │    │    ├── right ordering: +26
           │    │    │    ├── has-placeholder
           │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), ()~~>(33)
           │    │    │    ├── ordering: +1
           │    │    │    ├── select
           │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
           │    │    │    │    ├── has-placeholder
           │    │    │    │    ├── key: (1)
           │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │    │    ├── ordering: +1
           │    │    │    │    ├── scan instance_types
           │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
           │    │    │    │    │    ├── key: (1)
           │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │    │    │    └── ordering: +1
           │    │    │    │    └── filters
           │    │    │    │         └── instance_types.deleted = $2 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
           │    │    │    ├── project
           │    │    │    │    ├── columns: true:33(bool!null) instance_type_projects.instance_type_id:26(int!null)
           │    │    │    │    ├── has-placeholder
           │    │    │    │    ├── fd: ()-->(33)
           │    │    │    │    ├── ordering: +26 opt(33) [actual: +26]
           │    │    │    │    ├── select
           │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:26(int!null) project_id:27(string!null) instance_type_projects.deleted:28(bool!null)
           │    │    │    │    │    ├── has-placeholder
           │    │    │    │    │    ├── key: (26-28)
           │    │    │    │    │    ├── ordering: +26
           │    │    │    │    │    ├── scan instance_type_projects@secondary
           │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:26(int!null) project_id:27(string) instance_type_projects.deleted:28(bool)
           │    │    │    │    │    │    ├── lax-key: (26-28)
           │    │    │    │    │    │    └── ordering: +26
           │    │    │    │    │    └── filters
           │    │    │    │    │         ├── instance_type_projects.deleted = $3 [type=bool, outer=(28), constraints=(/28: (/NULL - ])]
           │    │    │    │    │         └── project_id = $4 [type=bool, outer=(27), constraints=(/27: (/NULL - ])]
           │    │    │    │    └── projections
           │    │    │    │         └── true [type=bool]
           │    │    │    └── filters (true)
           │    │    └── aggregations
           │    │         ├── const-not-null-agg [type=bool, outer=(33)]
           │    │         │    └── variable: true [type=bool]
           │    │         ├── const-agg [type=string, outer=(2)]
           │    │         │    └── variable: name [type=string]
           │    │         ├── const-agg [type=int, outer=(3)]
           │    │         │    └── variable: memory_mb [type=int]
           │    │         ├── const-agg [type=int, outer=(4)]
           │    │         │    └── variable: vcpus [type=int]
           │    │         ├── const-agg [type=int, outer=(5)]
           │    │         │    └── variable: root_gb [type=int]
           │    │         ├── const-agg [type=int, outer=(6)]
           │    │         │    └── variable: ephemeral_gb [type=int]
           │    │         ├── const-agg [type=string, outer=(7)]
           │    │         │    └── variable: flavorid [type=string]
           │    │         ├── const-agg [type=int, outer=(8)]
           │    │         │    └── variable: swap [type=int]
           │    │         ├── const-agg [type=float, outer=(9)]
           │    │         │    └── variable: rxtx_factor [type=float]
           │    │         ├── const-agg [type=int, outer=(10)]
           │    │         │    └── variable: vcpu_weight [type=int]
           │    │         ├── const-agg [type=bool, outer=(11)]
           │    │         │    └── variable: disabled [type=bool]
           │    │         ├── const-agg [type=bool, outer=(12)]
           │    │         │    └── variable: is_public [type=bool]
           │    │         ├── const-agg [type=bool, outer=(13)]
           │    │         │    └── variable: instance_types.deleted [type=bool]
           │    │         ├── const-agg [type=timestamp, outer=(14)]
           │    │         │    └── variable: instance_types.deleted_at [type=timestamp]
           │    │         ├── const-agg [type=timestamp, outer=(15)]
           │    │         │    └── variable: instance_types.created_at [type=timestamp]
           │    │         └── const-agg [type=timestamp, outer=(16)]
           │    │              └── variable: instance_types.updated_at [type=timestamp]
           │    └── filters
           │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,34)]
           └── filters
                └── instance_type_extra_specs_1.instance_type_id = instance_types.id [type=bool, outer=(1,20), constraints=(/1: (/NULL - ]; /20: (/NULL - ]), fd=(1)==(20), (20)==(1)]

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.project_id = $3)))
            and instance_types.name = $4
      offset $5 rows
      limit $6)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $7
----
project
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:34(timestamp) instance_type_extra_specs_1_updated_at:35(timestamp) instance_type_extra_specs_1_deleted_at:33(timestamp) instance_type_extra_specs_1_deleted:32(bool) instance_type_extra_specs_1_id:28(int) instance_type_extra_specs_1_key:29(string) instance_type_extra_specs_1_value:30(string) instance_type_extra_specs_1_instance_type_id:31(int)
 ├── side-effects, has-placeholder
 ├── key: (1,28)
 ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
 └── left-join (lookup instance_type_extra_specs)
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
      ├── key columns: [28] = [28]
      ├── side-effects, has-placeholder
      ├── key: (1,28)
      ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
      ├── left-join (lookup instance_type_extra_specs@secondary)
      │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool)
      │    ├── key columns: [1] = [31]
      │    ├── side-effects, has-placeholder
      │    ├── key: (1,28)
      │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16), (28)-->(29,31,32), (29,31,32)~~>(28)
      │    ├── limit
      │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    ├── side-effects, has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16)
      │    │    ├── offset
      │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16)
      │    │    │    ├── select
      │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16)
      │    │    │    │    ├── group-by
      │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    │    ├── grouping columns: instance_types.id:1(int!null)
      │    │    │    │    │    ├── internal-ordering: +1
      │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16)
      │    │    │    │    │    ├── left-join (merge)
      │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:25(bool)
      │    │    │    │    │    │    ├── left ordering: +1
      │    │    │    │    │    │    ├── right ordering: +18
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16), ()~~>(25)
      │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)-->(1,3-12,14-16)
      │    │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    │    ├── scan instance_types
      │    │    │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    │    │    │    │    └── ordering: +1
      │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │         ├── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
      │    │    │    │    │    │    │         └── name = $4 [type=bool, outer=(2), constraints=(/2: (/NULL - ])]
      │    │    │    │    │    │    ├── project
      │    │    │    │    │    │    │    ├── columns: true:25(bool!null) instance_type_projects.instance_type_id:18(int!null)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── fd: ()-->(25)
      │    │    │    │    │    │    │    ├── ordering: +18 opt(25) [actual: +18]
      │    │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
      │    │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    │    ├── key: (18-20)
      │    │    │    │    │    │    │    │    ├── ordering: +18
      │    │    │    │    │    │    │    │    ├── scan instance_type_projects@secondary
      │    │    │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
      │    │    │    │    │    │    │    │    │    ├── lax-key: (18-20)
      │    │    │    │    │    │    │    │    │    └── ordering: +18
      │    │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
      │    │    │    │    │    │    │    │         └── project_id = $3 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
      │    │    │    │    │    │    │    └── projections
      │    │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │    │    │    └── filters (true)
      │    │    │    │    │    └── aggregations
      │    │    │    │    │         ├── const-not-null-agg [type=bool, outer=(25)]
      │    │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(13)]
      │    │    │    │    │         │    └── variable: instance_types.deleted [type=bool]
      │    │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │    │         │    └── variable: instance_types.deleted_at [type=timestamp]
      │    │    │    │    │         ├── const-agg [type=timestamp, outer=(15)]
      │    │    │    │    │         │    └── variable: instance_types.created_at [type=timestamp]
      │    │    │    │    │         └── const-agg [type=timestamp, outer=(16)]
      │    │    │    │    │              └── variable: instance_types.updated_at [type=timestamp]
      │    │    │    │    └── filters
      │    │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,26)]
      │    │    │    └── placeholder: $5 [type=int]
      │    │    └── placeholder: $6 [type=int]
      │    └── filters
      │         └── instance_type_extra_specs_1.deleted = $7 [type=bool, outer=(32), constraints=(/32: (/NULL - ])]
      └── filters (true)

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.project_id = $3)))
            and instance_types.id = $4
      offset $5 rows
      limit $6)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $7
----
project
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:34(timestamp) instance_type_extra_specs_1_updated_at:35(timestamp) instance_type_extra_specs_1_deleted_at:33(timestamp) instance_type_extra_specs_1_deleted:32(bool) instance_type_extra_specs_1_id:28(int) instance_type_extra_specs_1_key:29(string) instance_type_extra_specs_1_value:30(string) instance_type_extra_specs_1_instance_type_id:31(int)
 ├── side-effects, has-placeholder
 ├── key: (1,28)
 ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
 └── left-join (lookup instance_type_extra_specs)
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
      ├── key columns: [28] = [28]
      ├── side-effects, has-placeholder
      ├── key: (1,28)
      ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
      ├── left-join (lookup instance_type_extra_specs@secondary)
      │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool)
      │    ├── key columns: [1] = [31]
      │    ├── side-effects, has-placeholder
      │    ├── key: (1,28)
      │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29,31,32), (29,31,32)~~>(28)
      │    ├── limit
      │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    ├── side-effects, has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    ├── offset
      │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    ├── select
      │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    ├── group-by
      │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    │    ├── grouping columns: instance_types.id:1(int!null)
      │    │    │    │    │    ├── internal-ordering: +1
      │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    │    ├── left-join (merge)
      │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:25(bool)
      │    │    │    │    │    │    ├── left ordering: +1
      │    │    │    │    │    │    ├── right ordering: +18
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), ()~~>(25)
      │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    │    ├── scan instance_types
      │    │    │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    │    │    │    │    └── ordering: +1
      │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │         ├── instance_types.id = $4 [type=bool, outer=(1), constraints=(/1: (/NULL - ])]
      │    │    │    │    │    │    │         └── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
      │    │    │    │    │    │    ├── project
      │    │    │    │    │    │    │    ├── columns: true:25(bool!null) instance_type_projects.instance_type_id:18(int!null)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── fd: ()-->(25)
      │    │    │    │    │    │    │    ├── ordering: +18 opt(25) [actual: +18]
      │    │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
      │    │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    │    ├── key: (18-20)
      │    │    │    │    │    │    │    │    ├── ordering: +18
      │    │    │    │    │    │    │    │    ├── scan instance_type_projects@secondary
      │    │    │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
      │    │    │    │    │    │    │    │    │    ├── lax-key: (18-20)
      │    │    │    │    │    │    │    │    │    └── ordering: +18
      │    │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
      │    │    │    │    │    │    │    │         ├── project_id = $3 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
      │    │    │    │    │    │    │    │         └── instance_type_projects.instance_type_id = $4 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
      │    │    │    │    │    │    │    └── projections
      │    │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │    │    │    └── filters (true)
      │    │    │    │    │    └── aggregations
      │    │    │    │    │         ├── const-not-null-agg [type=bool, outer=(25)]
      │    │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(13)]
      │    │    │    │    │         │    └── variable: instance_types.deleted [type=bool]
      │    │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │    │         │    └── variable: instance_types.deleted_at [type=timestamp]
      │    │    │    │    │         ├── const-agg [type=timestamp, outer=(15)]
      │    │    │    │    │         │    └── variable: instance_types.created_at [type=timestamp]
      │    │    │    │    │         └── const-agg [type=timestamp, outer=(16)]
      │    │    │    │    │              └── variable: instance_types.updated_at [type=timestamp]
      │    │    │    │    └── filters
      │    │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,26)]
      │    │    │    └── placeholder: $5 [type=int]
      │    │    └── placeholder: $6 [type=int]
      │    └── filters
      │         └── instance_type_extra_specs_1.deleted = $7 [type=bool, outer=(32), constraints=(/32: (/NULL - ])]
      └── filters (true)

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public
      from flavors
      where (flavors.is_public = true
             or (exists (select 1
                         from flavor_projects
                         where flavor_projects.flavor_id = flavors.id
                               and flavor_projects.project_id = $1)))
            and flavors.name = $2
      offset $3 rows
      limit $4)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
----
project
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) flavor_extra_specs_1_created_at:29(timestamp) flavor_extra_specs_1_updated_at:30(timestamp) flavor_extra_specs_1_id:25(int) flavor_extra_specs_1_key:26(string) flavor_extra_specs_1_value:27(string) flavor_extra_specs_1_flavor_id:28(int)
 ├── side-effects, has-placeholder
 ├── key: (1,25)
 ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
 └── right-join
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,25)
      ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
      ├── scan flavor_extra_specs_1
      │    ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      │    ├── key: (25)
      │    └── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
      ├── limit
      │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    ├── side-effects, has-placeholder
      │    ├── key: (1)
      │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    ├── offset
      │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    ├── has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    ├── select
      │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    ├── group-by
      │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    │    ├── grouping columns: flavors.id:1(int!null)
      │    │    │    │    ├── internal-ordering: +1
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    ├── left-join (merge)
      │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:22(bool)
      │    │    │    │    │    ├── left ordering: +1
      │    │    │    │    │    ├── right ordering: +17
      │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), ()~~>(22)
      │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    ├── select
      │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    ├── scan flavors
      │    │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    │    └── ordering: +1
      │    │    │    │    │    │    └── filters
      │    │    │    │    │    │         └── name = $2 [type=bool, outer=(2), constraints=(/2: (/NULL - ])]
      │    │    │    │    │    ├── project
      │    │    │    │    │    │    ├── columns: true:22(bool!null) flavor_projects.flavor_id:17(int!null)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── fd: ()-->(22)
      │    │    │    │    │    │    ├── ordering: +17 opt(22) [actual: +17]
      │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    ├── ordering: +17
      │    │    │    │    │    │    │    ├── scan flavor_projects@secondary
      │    │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    │    └── ordering: +17
      │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │         └── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
      │    │    │    │    │    │    └── projections
      │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │    │    └── filters (true)
      │    │    │    │    └── aggregations
      │    │    │    │         ├── const-not-null-agg [type=bool, outer=(22)]
      │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │    └── variable: flavors.created_at [type=timestamp]
      │    │    │    │         └── const-agg [type=timestamp, outer=(15)]
      │    │    │    │              └── variable: flavors.updated_at [type=timestamp]
      │    │    │    └── filters
      │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,23)]
      │    │    └── placeholder: $3 [type=int]
      │    └── placeholder: $4 [type=int]
      └── filters
           └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,28), constraints=(/1: (/NULL - ]; /28: (/NULL - ]), fd=(1)==(28), (28)==(1)]

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public
      from flavors
      where (flavors.is_public = true
             or (exists (select 1
                         from flavor_projects
                         where flavor_projects.flavor_id = flavors.id
                               and flavor_projects.project_id = $1)))
            and flavors.flavorid = $2
      offset $3 rows
      limit $4)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
----
project
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) flavor_extra_specs_1_created_at:29(timestamp) flavor_extra_specs_1_updated_at:30(timestamp) flavor_extra_specs_1_id:25(int) flavor_extra_specs_1_key:26(string) flavor_extra_specs_1_value:27(string) flavor_extra_specs_1_flavor_id:28(int)
 ├── side-effects, has-placeholder
 ├── key: (1,25)
 ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
 └── right-join
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,25)
      ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
      ├── scan flavor_extra_specs_1
      │    ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      │    ├── key: (25)
      │    └── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
      ├── limit
      │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    ├── side-effects, has-placeholder
      │    ├── key: (1)
      │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    ├── offset
      │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    ├── has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    ├── select
      │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    ├── group-by
      │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    │    ├── grouping columns: flavors.id:1(int!null)
      │    │    │    │    ├── internal-ordering: +1
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    ├── left-join (merge)
      │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:22(bool)
      │    │    │    │    │    ├── left ordering: +1
      │    │    │    │    │    ├── right ordering: +17
      │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), ()~~>(22)
      │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    ├── select
      │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    ├── scan flavors
      │    │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    │    └── ordering: +1
      │    │    │    │    │    │    └── filters
      │    │    │    │    │    │         └── flavorid = $2 [type=bool, outer=(7), constraints=(/7: (/NULL - ])]
      │    │    │    │    │    ├── project
      │    │    │    │    │    │    ├── columns: true:22(bool!null) flavor_projects.flavor_id:17(int!null)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── fd: ()-->(22)
      │    │    │    │    │    │    ├── ordering: +17 opt(22) [actual: +17]
      │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    ├── ordering: +17
      │    │    │    │    │    │    │    ├── scan flavor_projects@secondary
      │    │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    │    └── ordering: +17
      │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │         └── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
      │    │    │    │    │    │    └── projections
      │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │    │    └── filters (true)
      │    │    │    │    └── aggregations
      │    │    │    │         ├── const-not-null-agg [type=bool, outer=(22)]
      │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │    └── variable: flavors.created_at [type=timestamp]
      │    │    │    │         └── const-agg [type=timestamp, outer=(15)]
      │    │    │    │              └── variable: flavors.updated_at [type=timestamp]
      │    │    │    └── filters
      │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,23)]
      │    │    └── placeholder: $3 [type=int]
      │    └── placeholder: $4 [type=int]
      └── filters
           └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,28), constraints=(/1: (/NULL - ]; /28: (/NULL - ]), fd=(1)==(28), (28)==(1)]

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public
      from flavors
      where (flavors.is_public = true
             or (exists (select 1
                         from flavor_projects
                         where flavor_projects.flavor_id = flavors.id
                               and flavor_projects.project_id = $1)))
            and (flavors.flavorid > $2
                 or flavors.flavorid = $3
                    and flavors.id > $4)
      order by flavors.flavorid asc, flavors.id asc
      offset $5 rows
      limit $6)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
order by anon_1.flavors_flavorid asc, anon_1.flavors_id asc
----
sort
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) flavor_extra_specs_1_created_at:29(timestamp) flavor_extra_specs_1_updated_at:30(timestamp) flavor_extra_specs_1_id:25(int) flavor_extra_specs_1_key:26(string) flavor_extra_specs_1_value:27(string) flavor_extra_specs_1_flavor_id:28(int)
 ├── side-effects, has-placeholder
 ├── key: (1,25)
 ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
 ├── ordering: +7
 └── project
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,25)
      ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
      └── right-join
           ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
           ├── side-effects, has-placeholder
           ├── key: (1,25)
           ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
           ├── scan flavor_extra_specs_1
           │    ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
           │    ├── key: (25)
           │    └── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
           ├── limit
           │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    ├── internal-ordering: +7
           │    ├── side-effects, has-placeholder
           │    ├── key: (1)
           │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    ├── offset
           │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    ├── internal-ordering: +7
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    ├── ordering: +7
           │    │    ├── sort
           │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    │    ├── has-placeholder
           │    │    │    ├── key: (1)
           │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │    ├── ordering: +7
           │    │    │    └── select
           │    │    │         ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    │         ├── has-placeholder
           │    │    │         ├── key: (1)
           │    │    │         ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         ├── group-by
           │    │    │         │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    │         │    ├── grouping columns: flavors.id:1(int!null)
           │    │    │         │    ├── internal-ordering: +1
           │    │    │         │    ├── has-placeholder
           │    │    │         │    ├── key: (1)
           │    │    │         │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         │    ├── left-join (merge)
           │    │    │         │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:22(bool)
           │    │    │         │    │    ├── left ordering: +1
           │    │    │         │    │    ├── right ordering: +17
           │    │    │         │    │    ├── has-placeholder
           │    │    │         │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), ()~~>(22)
           │    │    │         │    │    ├── ordering: +1
           │    │    │         │    │    ├── select
           │    │    │         │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── key: (1)
           │    │    │         │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         │    │    │    ├── ordering: +1
           │    │    │         │    │    │    ├── scan flavors
           │    │    │         │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
           │    │    │         │    │    │    │    ├── key: (1)
           │    │    │         │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         │    │    │    │    └── ordering: +1
           │    │    │         │    │    │    └── filters
           │    │    │         │    │    │         └── (flavorid > $2) OR ((flavorid = $3) AND (flavors.id > $4)) [type=bool, outer=(1,7)]
           │    │    │         │    │    ├── project
           │    │    │         │    │    │    ├── columns: true:22(bool!null) flavor_projects.flavor_id:17(int!null)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── fd: ()-->(22)
           │    │    │         │    │    │    ├── ordering: +17 opt(22) [actual: +17]
           │    │    │         │    │    │    ├── select
           │    │    │         │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │    │         │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    ├── key: (17,18)
           │    │    │         │    │    │    │    ├── ordering: +17
           │    │    │         │    │    │    │    ├── scan flavor_projects@secondary
           │    │    │         │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │    │         │    │    │    │    │    ├── key: (17,18)
           │    │    │         │    │    │    │    │    └── ordering: +17
           │    │    │         │    │    │    │    └── filters
           │    │    │         │    │    │    │         └── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
           │    │    │         │    │    │    └── projections
           │    │    │         │    │    │         └── true [type=bool]
           │    │    │         │    │    └── filters (true)
           │    │    │         │    └── aggregations
           │    │    │         │         ├── const-not-null-agg [type=bool, outer=(22)]
           │    │    │         │         │    └── variable: true [type=bool]
           │    │    │         │         ├── const-agg [type=string, outer=(2)]
           │    │    │         │         │    └── variable: name [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(3)]
           │    │    │         │         │    └── variable: memory_mb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(4)]
           │    │    │         │         │    └── variable: vcpus [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(5)]
           │    │    │         │         │    └── variable: root_gb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(6)]
           │    │    │         │         │    └── variable: ephemeral_gb [type=int]
           │    │    │         │         ├── const-agg [type=string, outer=(7)]
           │    │    │         │         │    └── variable: flavorid [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(8)]
           │    │    │         │         │    └── variable: swap [type=int]
           │    │    │         │         ├── const-agg [type=float, outer=(9)]
           │    │    │         │         │    └── variable: rxtx_factor [type=float]
           │    │    │         │         ├── const-agg [type=int, outer=(10)]
           │    │    │         │         │    └── variable: vcpu_weight [type=int]
           │    │    │         │         ├── const-agg [type=bool, outer=(11)]
           │    │    │         │         │    └── variable: disabled [type=bool]
           │    │    │         │         ├── const-agg [type=bool, outer=(12)]
           │    │    │         │         │    └── variable: is_public [type=bool]
           │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
           │    │    │         │         │    └── variable: flavors.created_at [type=timestamp]
           │    │    │         │         └── const-agg [type=timestamp, outer=(15)]
           │    │    │         │              └── variable: flavors.updated_at [type=timestamp]
           │    │    │         └── filters
           │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,23)]
           │    │    └── placeholder: $5 [type=int]
           │    └── placeholder: $6 [type=int]
           └── filters
                └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,28), constraints=(/1: (/NULL - ]; /28: (/NULL - ]), fd=(1)==(28), (28)==(1)]

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.project_id = $3)))
      order by instance_types.flavorid asc, instance_types.id asc
      offset $4 rows
      limit $5)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $6
order by anon_1.instance_types_flavorid asc,
         anon_1.instance_types_id asc
----
sort
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:34(timestamp) instance_type_extra_specs_1_updated_at:35(timestamp) instance_type_extra_specs_1_deleted_at:33(timestamp) instance_type_extra_specs_1_deleted:32(bool) instance_type_extra_specs_1_id:28(int) instance_type_extra_specs_1_key:29(string) instance_type_extra_specs_1_value:30(string) instance_type_extra_specs_1_instance_type_id:31(int)
 ├── side-effects, has-placeholder
 ├── key: (1,28)
 ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
 ├── ordering: +7,+1
 └── project
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,28)
      ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
      └── right-join
           ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
           ├── side-effects, has-placeholder
           ├── key: (1,28)
           ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
           ├── select
           │    ├── columns: instance_type_extra_specs_1.id:28(int!null) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int!null) instance_type_extra_specs_1.deleted:32(bool!null) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
           │    ├── has-placeholder
           │    ├── key: (28)
           │    ├── fd: (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
           │    ├── scan instance_type_extra_specs_1
           │    │    ├── columns: instance_type_extra_specs_1.id:28(int!null) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int!null) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
           │    │    ├── key: (28)
           │    │    └── fd: (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
           │    └── filters
           │         └── instance_type_extra_specs_1.deleted = $6 [type=bool, outer=(32), constraints=(/32: (/NULL - ])]
           ├── limit
           │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    ├── internal-ordering: +7,+1
           │    ├── side-effects, has-placeholder
           │    ├── key: (1)
           │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    ├── offset
           │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    ├── internal-ordering: +7,+1
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    ├── ordering: +7,+1
           │    │    ├── sort
           │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    │    ├── has-placeholder
           │    │    │    ├── key: (1)
           │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │    ├── ordering: +7,+1
           │    │    │    └── select
           │    │    │         ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    │         ├── has-placeholder
           │    │    │         ├── key: (1)
           │    │    │         ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         ├── group-by
           │    │    │         │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
           │    │    │         │    ├── grouping columns: instance_types.id:1(int!null)
           │    │    │         │    ├── internal-ordering: +1
           │    │    │         │    ├── has-placeholder
           │    │    │         │    ├── key: (1)
           │    │    │         │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         │    ├── left-join (merge)
           │    │    │         │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:25(bool)
           │    │    │         │    │    ├── left ordering: +1
           │    │    │         │    │    ├── right ordering: +18
           │    │    │         │    │    ├── has-placeholder
           │    │    │         │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), ()~~>(25)
           │    │    │         │    │    ├── ordering: +1
           │    │    │         │    │    ├── select
           │    │    │         │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── key: (1)
           │    │    │         │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         │    │    │    ├── ordering: +1
           │    │    │         │    │    │    ├── scan instance_types
           │    │    │         │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
           │    │    │         │    │    │    │    ├── key: (1)
           │    │    │         │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
           │    │    │         │    │    │    │    └── ordering: +1
           │    │    │         │    │    │    └── filters
           │    │    │         │    │    │         └── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
           │    │    │         │    │    ├── project
           │    │    │         │    │    │    ├── columns: true:25(bool!null) instance_type_projects.instance_type_id:18(int!null)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── fd: ()-->(25)
           │    │    │         │    │    │    ├── ordering: +18 opt(25) [actual: +18]
           │    │    │         │    │    │    ├── select
           │    │    │         │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
           │    │    │         │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    ├── key: (18-20)
           │    │    │         │    │    │    │    ├── ordering: +18
           │    │    │         │    │    │    │    ├── scan instance_type_projects@secondary
           │    │    │         │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
           │    │    │         │    │    │    │    │    ├── lax-key: (18-20)
           │    │    │         │    │    │    │    │    └── ordering: +18
           │    │    │         │    │    │    │    └── filters
           │    │    │         │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
           │    │    │         │    │    │    │         └── project_id = $3 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
           │    │    │         │    │    │    └── projections
           │    │    │         │    │    │         └── true [type=bool]
           │    │    │         │    │    └── filters (true)
           │    │    │         │    └── aggregations
           │    │    │         │         ├── const-not-null-agg [type=bool, outer=(25)]
           │    │    │         │         │    └── variable: true [type=bool]
           │    │    │         │         ├── const-agg [type=string, outer=(2)]
           │    │    │         │         │    └── variable: name [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(3)]
           │    │    │         │         │    └── variable: memory_mb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(4)]
           │    │    │         │         │    └── variable: vcpus [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(5)]
           │    │    │         │         │    └── variable: root_gb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(6)]
           │    │    │         │         │    └── variable: ephemeral_gb [type=int]
           │    │    │         │         ├── const-agg [type=string, outer=(7)]
           │    │    │         │         │    └── variable: flavorid [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(8)]
           │    │    │         │         │    └── variable: swap [type=int]
           │    │    │         │         ├── const-agg [type=float, outer=(9)]
           │    │    │         │         │    └── variable: rxtx_factor [type=float]
           │    │    │         │         ├── const-agg [type=int, outer=(10)]
           │    │    │         │         │    └── variable: vcpu_weight [type=int]
           │    │    │         │         ├── const-agg [type=bool, outer=(11)]
           │    │    │         │         │    └── variable: disabled [type=bool]
           │    │    │         │         ├── const-agg [type=bool, outer=(12)]
           │    │    │         │         │    └── variable: is_public [type=bool]
           │    │    │         │         ├── const-agg [type=bool, outer=(13)]
           │    │    │         │         │    └── variable: instance_types.deleted [type=bool]
           │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
           │    │    │         │         │    └── variable: instance_types.deleted_at [type=timestamp]
           │    │    │         │         ├── const-agg [type=timestamp, outer=(15)]
           │    │    │         │         │    └── variable: instance_types.created_at [type=timestamp]
           │    │    │         │         └── const-agg [type=timestamp, outer=(16)]
           │    │    │         │              └── variable: instance_types.updated_at [type=timestamp]
           │    │    │         └── filters
           │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,26)]
           │    │    └── placeholder: $4 [type=int]
           │    └── placeholder: $5 [type=int]
           └── filters
                └── instance_type_extra_specs_1.instance_type_id = instance_types.id [type=bool, outer=(1,31), constraints=(/1: (/NULL - ]; /31: (/NULL - ]), fd=(1)==(31), (31)==(1)]

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.project_id = $3)))
            and instance_types.flavorid = $4
      offset $5 rows
      limit $6)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $7
----
project
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:34(timestamp) instance_type_extra_specs_1_updated_at:35(timestamp) instance_type_extra_specs_1_deleted_at:33(timestamp) instance_type_extra_specs_1_deleted:32(bool) instance_type_extra_specs_1_id:28(int) instance_type_extra_specs_1_key:29(string) instance_type_extra_specs_1_value:30(string) instance_type_extra_specs_1_instance_type_id:31(int)
 ├── side-effects, has-placeholder
 ├── key: (1,28)
 ├── fd: (1)-->(2-16), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
 └── left-join (lookup instance_type_extra_specs)
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
      ├── key columns: [28] = [28]
      ├── side-effects, has-placeholder
      ├── key: (1,28)
      ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
      ├── left-join (lookup instance_type_extra_specs@secondary)
      │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool)
      │    ├── key columns: [1] = [31]
      │    ├── side-effects, has-placeholder
      │    ├── key: (1,28)
      │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29,31,32), (29,31,32)~~>(28)
      │    ├── limit
      │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    ├── side-effects, has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    ├── offset
      │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    ├── select
      │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    ├── group-by
      │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    │    ├── grouping columns: instance_types.id:1(int!null)
      │    │    │    │    │    ├── internal-ordering: +1
      │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    │    ├── left-join (merge)
      │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:25(bool)
      │    │    │    │    │    │    ├── left ordering: +1
      │    │    │    │    │    │    ├── right ordering: +18
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), ()~~>(25)
      │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    │    ├── scan instance_types
      │    │    │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    │    │    │    │    └── ordering: +1
      │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │         ├── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
      │    │    │    │    │    │    │         └── flavorid = $4 [type=bool, outer=(7), constraints=(/7: (/NULL - ])]
      │    │    │    │    │    │    ├── project
      │    │    │    │    │    │    │    ├── columns: true:25(bool!null) instance_type_projects.instance_type_id:18(int!null)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── fd: ()-->(25)
      │    │    │    │    │    │    │    ├── ordering: +18 opt(25) [actual: +18]
      │    │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
      │    │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    │    ├── key: (18-20)
      │    │    │    │    │    │    │    │    ├── ordering: +18
      │    │    │    │    │    │    │    │    ├── scan instance_type_projects@secondary
      │    │    │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
      │    │    │    │    │    │    │    │    │    ├── lax-key: (18-20)
      │    │    │    │    │    │    │    │    │    └── ordering: +18
      │    │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
      │    │    │    │    │    │    │    │         └── project_id = $3 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
      │    │    │    │    │    │    │    └── projections
      │    │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │    │    │    └── filters (true)
      │    │    │    │    │    └── aggregations
      │    │    │    │    │         ├── const-not-null-agg [type=bool, outer=(25)]
      │    │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │    │         ├── const-agg [type=bool, outer=(13)]
      │    │    │    │    │         │    └── variable: instance_types.deleted [type=bool]
      │    │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │    │         │    └── variable: instance_types.deleted_at [type=timestamp]
      │    │    │    │    │         ├── const-agg [type=timestamp, outer=(15)]
      │    │    │    │    │         │    └── variable: instance_types.created_at [type=timestamp]
      │    │    │    │    │         └── const-agg [type=timestamp, outer=(16)]
      │    │    │    │    │              └── variable: instance_types.updated_at [type=timestamp]
      │    │    │    │    └── filters
      │    │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,26)]
      │    │    │    └── placeholder: $5 [type=int]
      │    │    └── placeholder: $6 [type=int]
      │    └── filters
      │         └── instance_type_extra_specs_1.deleted = $7 [type=bool, outer=(32), constraints=(/32: (/NULL - ])]
      └── filters (true)

opt
select flavors.created_at as flavors_created_at,
       flavors.updated_at as flavors_updated_at,
       flavors.id as flavors_id,
       flavors.name as flavors_name,
       flavors.memory_mb as flavors_memory_mb,
       flavors.vcpus as flavors_vcpus,
       flavors.root_gb as flavors_root_gb,
       flavors.ephemeral_gb as flavors_ephemeral_gb,
       flavors.flavorid as flavors_flavorid,
       flavors.swap as flavors_swap,
       flavors.rxtx_factor as flavors_rxtx_factor,
       flavors.vcpu_weight as flavors_vcpu_weight,
       flavors.disabled as flavors_disabled,
       flavors.is_public as flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from flavors
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = flavors.id
where flavors.is_public = true
      or (exists (select 1
                  from flavor_projects
                  where flavor_projects.flavor_id = flavors.id
                        and flavor_projects.project_id = $1))
order by flavors.flavorid asc, flavors.id asc
----
sort
 ├── columns: flavors_created_at:14(timestamp) flavors_updated_at:15(timestamp) flavors_id:1(int!null) flavors_name:2(string) flavors_memory_mb:3(int) flavors_vcpus:4(int) flavors_root_gb:5(int) flavors_ephemeral_gb:6(int) flavors_flavorid:7(string) flavors_swap:8(int) flavors_rxtx_factor:9(float) flavors_vcpu_weight:10(int) flavors_disabled:11(bool) flavors_is_public:12(bool) flavor_extra_specs_1_created_at:20(timestamp) flavor_extra_specs_1_updated_at:21(timestamp) flavor_extra_specs_1_id:16(int) flavor_extra_specs_1_key:17(string) flavor_extra_specs_1_value:18(string) flavor_extra_specs_1_flavor_id:19(int)
 ├── has-placeholder
 ├── key: (1,16)
 ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (16)-->(17-21), (17,19)-->(16,18,20,21)
 ├── ordering: +7
 └── project
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_extra_specs_1.id:16(int) key:17(string) value:18(string) flavor_extra_specs_1.flavor_id:19(int) flavor_extra_specs_1.created_at:20(timestamp) flavor_extra_specs_1.updated_at:21(timestamp)
      ├── has-placeholder
      ├── key: (1,16)
      ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (16)-->(17-21), (17,19)-->(16,18,20,21)
      └── right-join
           ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_extra_specs_1.id:16(int) key:17(string) value:18(string) flavor_extra_specs_1.flavor_id:19(int) flavor_extra_specs_1.created_at:20(timestamp) flavor_extra_specs_1.updated_at:21(timestamp) true_agg:29(bool)
           ├── has-placeholder
           ├── key: (1,16)
           ├── fd: (1)-->(2-12,14,15,29), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (16)-->(17-21), (17,19)-->(16,18,20,21)
           ├── scan flavor_extra_specs_1
           │    ├── columns: flavor_extra_specs_1.id:16(int!null) key:17(string!null) value:18(string) flavor_extra_specs_1.flavor_id:19(int!null) flavor_extra_specs_1.created_at:20(timestamp) flavor_extra_specs_1.updated_at:21(timestamp)
           │    ├── key: (16)
           │    └── fd: (16)-->(17-21), (17,19)-->(16,18,20,21)
           ├── select
           │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:29(bool)
           │    ├── has-placeholder
           │    ├── key: (1)
           │    ├── fd: (1)-->(2-12,14,15,29), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    ├── group-by
           │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:29(bool)
           │    │    ├── grouping columns: flavors.id:1(int!null)
           │    │    ├── internal-ordering: +1
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: (1)-->(2-12,14,15,29), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    ├── left-join (merge)
           │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:23(int) true:28(bool)
           │    │    │    ├── left ordering: +1
           │    │    │    ├── right ordering: +23
           │    │    │    ├── has-placeholder
           │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), ()~~>(28)
           │    │    │    ├── ordering: +1
           │    │    │    ├── scan flavors
           │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
           │    │    │    │    ├── key: (1)
           │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │    │    └── ordering: +1
           │    │    │    ├── project
           │    │    │    │    ├── columns: true:28(bool!null) flavor_projects.flavor_id:23(int!null)
           │    │    │    │    ├── has-placeholder
           │    │    │    │    ├── fd: ()-->(28)
           │    │    │    │    ├── ordering: +23 opt(28) [actual: +23]
           │    │    │    │    ├── select
           │    │    │    │    │    ├── columns: flavor_projects.flavor_id:23(int!null) project_id:24(string!null)
           │    │    │    │    │    ├── has-placeholder
           │    │    │    │    │    ├── key: (23,24)
           │    │    │    │    │    ├── ordering: +23
           │    │    │    │    │    ├── scan flavor_projects@secondary
           │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:23(int!null) project_id:24(string!null)
           │    │    │    │    │    │    ├── key: (23,24)
           │    │    │    │    │    │    └── ordering: +23
           │    │    │    │    │    └── filters
           │    │    │    │    │         └── project_id = $1 [type=bool, outer=(24), constraints=(/24: (/NULL - ])]
           │    │    │    │    └── projections
           │    │    │    │         └── true [type=bool]
           │    │    │    └── filters (true)
           │    │    └── aggregations
           │    │         ├── const-not-null-agg [type=bool, outer=(28)]
           │    │         │    └── variable: true [type=bool]
           │    │         ├── const-agg [type=string, outer=(2)]
           │    │         │    └── variable: name [type=string]
           │    │         ├── const-agg [type=int, outer=(3)]
           │    │         │    └── variable: memory_mb [type=int]
           │    │         ├── const-agg [type=int, outer=(4)]
           │    │         │    └── variable: vcpus [type=int]
           │    │         ├── const-agg [type=int, outer=(5)]
           │    │         │    └── variable: root_gb [type=int]
           │    │         ├── const-agg [type=int, outer=(6)]
           │    │         │    └── variable: ephemeral_gb [type=int]
           │    │         ├── const-agg [type=string, outer=(7)]
           │    │         │    └── variable: flavorid [type=string]
           │    │         ├── const-agg [type=int, outer=(8)]
           │    │         │    └── variable: swap [type=int]
           │    │         ├── const-agg [type=float, outer=(9)]
           │    │         │    └── variable: rxtx_factor [type=float]
           │    │         ├── const-agg [type=int, outer=(10)]
           │    │         │    └── variable: vcpu_weight [type=int]
           │    │         ├── const-agg [type=bool, outer=(11)]
           │    │         │    └── variable: disabled [type=bool]
           │    │         ├── const-agg [type=bool, outer=(12)]
           │    │         │    └── variable: is_public [type=bool]
           │    │         ├── const-agg [type=timestamp, outer=(14)]
           │    │         │    └── variable: flavors.created_at [type=timestamp]
           │    │         └── const-agg [type=timestamp, outer=(15)]
           │    │              └── variable: flavors.updated_at [type=timestamp]
           │    └── filters
           │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,29)]
           └── filters
                └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,19), constraints=(/1: (/NULL - ]; /19: (/NULL - ]), fd=(1)==(19), (19)==(1)]

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.project_id = $3)))
            and (instance_types.flavorid > $4
                 or instance_types.flavorid = $5
                    and instance_types.id > $6)
      order by instance_types.flavorid asc, instance_types.id asc
      offset $7 rows
      limit $8)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $9
order by anon_1.instance_types_flavorid asc,
         anon_1.instance_types_id asc
----
project
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:34(timestamp) instance_type_extra_specs_1_updated_at:35(timestamp) instance_type_extra_specs_1_deleted_at:33(timestamp) instance_type_extra_specs_1_deleted:32(bool) instance_type_extra_specs_1_id:28(int) instance_type_extra_specs_1_key:29(string) instance_type_extra_specs_1_value:30(string) instance_type_extra_specs_1_instance_type_id:31(int)
 ├── side-effects, has-placeholder
 ├── key: (1,28)
 ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
 ├── ordering: +7,+1
 └── left-join (lookup instance_type_extra_specs)
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
      ├── key columns: [28] = [28]
      ├── side-effects, has-placeholder
      ├── key: (1,28)
      ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
      ├── ordering: +7,+1
      ├── left-join (lookup instance_type_extra_specs@secondary)
      │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool)
      │    ├── key columns: [1] = [31]
      │    ├── side-effects, has-placeholder
      │    ├── key: (1,28)
      │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29,31,32), (29,31,32)~~>(28)
      │    ├── ordering: +7,+1
      │    ├── limit
      │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    ├── internal-ordering: +7,+1
      │    │    ├── side-effects, has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    ├── ordering: +7,+1
      │    │    ├── offset
      │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    ├── internal-ordering: +7,+1
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    ├── ordering: +7,+1
      │    │    │    ├── sort
      │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    ├── ordering: +7,+1
      │    │    │    │    └── select
      │    │    │    │         ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │         ├── has-placeholder
      │    │    │    │         ├── key: (1)
      │    │    │    │         ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         ├── group-by
      │    │    │    │         │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │         │    ├── grouping columns: instance_types.id:1(int!null)
      │    │    │    │         │    ├── internal-ordering: +1
      │    │    │    │         │    ├── has-placeholder
      │    │    │    │         │    ├── key: (1)
      │    │    │    │         │    ├── fd: (1)-->(2-16,26), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         │    ├── left-join (merge)
      │    │    │    │         │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:25(bool)
      │    │    │    │         │    │    ├── left ordering: +1
      │    │    │    │         │    │    ├── right ordering: +18
      │    │    │    │         │    │    ├── has-placeholder
      │    │    │    │         │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), ()~~>(25)
      │    │    │    │         │    │    ├── ordering: +1
      │    │    │    │         │    │    ├── select
      │    │    │    │         │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │         │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         │    │    │    ├── ordering: +1
      │    │    │    │         │    │    │    ├── scan instance_types
      │    │    │    │         │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │         │    │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         │    │    │    │    └── ordering: +1
      │    │    │    │         │    │    │    └── filters
      │    │    │    │         │    │    │         ├── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
      │    │    │    │         │    │    │         └── (flavorid > $4) OR ((flavorid = $5) AND (instance_types.id > $6)) [type=bool, outer=(1,7)]
      │    │    │    │         │    │    ├── project
      │    │    │    │         │    │    │    ├── columns: true:25(bool!null) instance_type_projects.instance_type_id:18(int!null)
      │    │    │    │         │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    ├── fd: ()-->(25)
      │    │    │    │         │    │    │    ├── ordering: +18 opt(25) [actual: +18]
      │    │    │    │         │    │    │    ├── select
      │    │    │    │         │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
      │    │    │    │         │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    ├── key: (18-20)
      │    │    │    │         │    │    │    │    ├── ordering: +18
      │    │    │    │         │    │    │    │    ├── scan instance_type_projects@secondary
      │    │    │    │         │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
      │    │    │    │         │    │    │    │    │    ├── lax-key: (18-20)
      │    │    │    │         │    │    │    │    │    └── ordering: +18
      │    │    │    │         │    │    │    │    └── filters
      │    │    │    │         │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
      │    │    │    │         │    │    │    │         └── project_id = $3 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
      │    │    │    │         │    │    │    └── projections
      │    │    │    │         │    │    │         └── true [type=bool]
      │    │    │    │         │    │    └── filters (true)
      │    │    │    │         │    └── aggregations
      │    │    │    │         │         ├── const-not-null-agg [type=bool, outer=(25)]
      │    │    │    │         │         │    └── variable: true [type=bool]
      │    │    │    │         │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │         │    └── variable: name [type=string]
      │    │    │    │         │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │         │    └── variable: memory_mb [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │         │    └── variable: vcpus [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │         │    └── variable: root_gb [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │         │    └── variable: flavorid [type=string]
      │    │    │    │         │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │         │    └── variable: swap [type=int]
      │    │    │    │         │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │         │    └── variable: disabled [type=bool]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │         │    └── variable: is_public [type=bool]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(13)]
      │    │    │    │         │         │    └── variable: instance_types.deleted [type=bool]
      │    │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │         │    └── variable: instance_types.deleted_at [type=timestamp]
      │    │    │    │         │         ├── const-agg [type=timestamp, outer=(15)]
      │    │    │    │         │         │    └── variable: instance_types.created_at [type=timestamp]
      │    │    │    │         │         └── const-agg [type=timestamp, outer=(16)]
      │    │    │    │         │              └── variable: instance_types.updated_at [type=timestamp]
      │    │    │    │         └── filters
      │    │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,26)]
      │    │    │    └── placeholder: $7 [type=int]
      │    │    └── placeholder: $8 [type=int]
      │    └── filters
      │         └── instance_type_extra_specs_1.deleted = $9 [type=bool, outer=(32), constraints=(/32: (/NULL - ])]
      └── filters (true)

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public
      from flavors
      where flavors.is_public = true
            or (exists (select 1
                        from flavor_projects
                        where flavor_projects.flavor_id = flavors.id
                              and flavor_projects.project_id = $1))
      order by flavors.flavorid asc, flavors.id asc
      offset $2 rows
      limit $3)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
order by anon_1.flavors_flavorid asc, anon_1.flavors_id asc
----
sort
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) flavor_extra_specs_1_created_at:29(timestamp) flavor_extra_specs_1_updated_at:30(timestamp) flavor_extra_specs_1_id:25(int) flavor_extra_specs_1_key:26(string) flavor_extra_specs_1_value:27(string) flavor_extra_specs_1_flavor_id:28(int)
 ├── side-effects, has-placeholder
 ├── key: (1,25)
 ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
 ├── ordering: +7
 └── project
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,25)
      ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
      └── right-join
           ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
           ├── side-effects, has-placeholder
           ├── key: (1,25)
           ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
           ├── scan flavor_extra_specs_1
           │    ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
           │    ├── key: (25)
           │    └── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
           ├── limit
           │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    ├── internal-ordering: +7
           │    ├── side-effects, has-placeholder
           │    ├── key: (1)
           │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    ├── offset
           │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    ├── internal-ordering: +7
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    ├── ordering: +7
           │    │    ├── sort
           │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    │    ├── has-placeholder
           │    │    │    ├── key: (1)
           │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │    ├── ordering: +7
           │    │    │    └── select
           │    │    │         ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    │         ├── has-placeholder
           │    │    │         ├── key: (1)
           │    │    │         ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         ├── group-by
           │    │    │         │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    │         │    ├── grouping columns: flavors.id:1(int!null)
           │    │    │         │    ├── internal-ordering: +1
           │    │    │         │    ├── has-placeholder
           │    │    │         │    ├── key: (1)
           │    │    │         │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         │    ├── left-join (merge)
           │    │    │         │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:22(bool)
           │    │    │         │    │    ├── left ordering: +1
           │    │    │         │    │    ├── right ordering: +17
           │    │    │         │    │    ├── has-placeholder
           │    │    │         │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), ()~~>(22)
           │    │    │         │    │    ├── ordering: +1
           │    │    │         │    │    ├── scan flavors
           │    │    │         │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
           │    │    │         │    │    │    ├── key: (1)
           │    │    │         │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
           │    │    │         │    │    │    └── ordering: +1
           │    │    │         │    │    ├── project
           │    │    │         │    │    │    ├── columns: true:22(bool!null) flavor_projects.flavor_id:17(int!null)
           │    │    │         │    │    │    ├── has-placeholder
           │    │    │         │    │    │    ├── fd: ()-->(22)
           │    │    │         │    │    │    ├── ordering: +17 opt(22) [actual: +17]
           │    │    │         │    │    │    ├── select
           │    │    │         │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │    │         │    │    │    │    ├── has-placeholder
           │    │    │         │    │    │    │    ├── key: (17,18)
           │    │    │         │    │    │    │    ├── ordering: +17
           │    │    │         │    │    │    │    ├── scan flavor_projects@secondary
           │    │    │         │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │    │         │    │    │    │    │    ├── key: (17,18)
           │    │    │         │    │    │    │    │    └── ordering: +17
           │    │    │         │    │    │    │    └── filters
           │    │    │         │    │    │    │         └── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
           │    │    │         │    │    │    └── projections
           │    │    │         │    │    │         └── true [type=bool]
           │    │    │         │    │    └── filters (true)
           │    │    │         │    └── aggregations
           │    │    │         │         ├── const-not-null-agg [type=bool, outer=(22)]
           │    │    │         │         │    └── variable: true [type=bool]
           │    │    │         │         ├── const-agg [type=string, outer=(2)]
           │    │    │         │         │    └── variable: name [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(3)]
           │    │    │         │         │    └── variable: memory_mb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(4)]
           │    │    │         │         │    └── variable: vcpus [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(5)]
           │    │    │         │         │    └── variable: root_gb [type=int]
           │    │    │         │         ├── const-agg [type=int, outer=(6)]
           │    │    │         │         │    └── variable: ephemeral_gb [type=int]
           │    │    │         │         ├── const-agg [type=string, outer=(7)]
           │    │    │         │         │    └── variable: flavorid [type=string]
           │    │    │         │         ├── const-agg [type=int, outer=(8)]
           │    │    │         │         │    └── variable: swap [type=int]
           │    │    │         │         ├── const-agg [type=float, outer=(9)]
           │    │    │         │         │    └── variable: rxtx_factor [type=float]
           │    │    │         │         ├── const-agg [type=int, outer=(10)]
           │    │    │         │         │    └── variable: vcpu_weight [type=int]
           │    │    │         │         ├── const-agg [type=bool, outer=(11)]
           │    │    │         │         │    └── variable: disabled [type=bool]
           │    │    │         │         ├── const-agg [type=bool, outer=(12)]
           │    │    │         │         │    └── variable: is_public [type=bool]
           │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
           │    │    │         │         │    └── variable: flavors.created_at [type=timestamp]
           │    │    │         │         └── const-agg [type=timestamp, outer=(15)]
           │    │    │         │              └── variable: flavors.updated_at [type=timestamp]
           │    │    │         └── filters
           │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,23)]
           │    │    └── placeholder: $2 [type=int]
           │    └── placeholder: $3 [type=int]
           └── filters
                └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,28), constraints=(/1: (/NULL - ]; /28: (/NULL - ]), fd=(1)==(28), (28)==(1)]

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.project_id = $3)))
            and instance_types.disabled = false
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $4
                                   and instance_type_projects.deleted = $5
                                   and instance_type_projects.project_id = $6)))
      order by instance_types.flavorid asc, instance_types.id asc
      offset $7 rows
      limit $8)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $9
order by anon_1.instance_types_flavorid asc,
         anon_1.instance_types_id asc
----
project
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:45(timestamp) instance_type_extra_specs_1_updated_at:46(timestamp) instance_type_extra_specs_1_deleted_at:44(timestamp) instance_type_extra_specs_1_deleted:43(bool) instance_type_extra_specs_1_id:39(int) instance_type_extra_specs_1_key:40(string) instance_type_extra_specs_1_value:41(string) instance_type_extra_specs_1_instance_type_id:42(int)
 ├── side-effects, has-placeholder
 ├── key: (1,39)
 ├── fd: ()-->(11), (1)-->(2-10,12-16), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16), (39)-->(40-46), (40,42,43)~~>(39,41,44-46)
 ├── ordering: +7,+1 opt(11) [actual: +7,+1]
 └── left-join (lookup instance_type_extra_specs)
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:37(bool) instance_type_extra_specs_1.id:39(int) key:40(string) value:41(string) instance_type_extra_specs_1.instance_type_id:42(int) instance_type_extra_specs_1.deleted:43(bool) instance_type_extra_specs_1.deleted_at:44(timestamp) instance_type_extra_specs_1.created_at:45(timestamp) instance_type_extra_specs_1.updated_at:46(timestamp)
      ├── key columns: [39] = [39]
      ├── side-effects, has-placeholder
      ├── key: (1,39)
      ├── fd: ()-->(11), (1)-->(2-10,12-16,37), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16), (39)-->(40-46), (40,42,43)~~>(39,41,44-46)
      ├── ordering: +7,+1 opt(11) [actual: +7,+1]
      ├── left-join (lookup instance_type_extra_specs@secondary)
      │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:37(bool) instance_type_extra_specs_1.id:39(int) key:40(string) instance_type_extra_specs_1.instance_type_id:42(int) instance_type_extra_specs_1.deleted:43(bool)
      │    ├── key columns: [1] = [42]
      │    ├── side-effects, has-placeholder
      │    ├── key: (1,39)
      │    ├── fd: ()-->(11), (1)-->(2-10,12-16,37), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16), (39)-->(40,42,43), (40,42,43)~~>(39)
      │    ├── ordering: +7,+1 opt(11) [actual: +7,+1]
      │    ├── limit
      │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:37(bool)
      │    │    ├── internal-ordering: +7,+1 opt(11)
      │    │    ├── side-effects, has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: ()-->(11), (1)-->(2-10,12-16,37), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    ├── ordering: +7,+1 opt(11) [actual: +7,+1]
      │    │    ├── offset
      │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:37(bool)
      │    │    │    ├── internal-ordering: +7,+1 opt(11)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12-16,37), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    │    ├── ordering: +7,+1 opt(11) [actual: +7,+1]
      │    │    │    ├── sort
      │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:37(bool)
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12-16,37), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    │    │    ├── ordering: +7,+1 opt(11) [actual: +7,+1]
      │    │    │    │    └── select
      │    │    │    │         ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:37(bool)
      │    │    │    │         ├── has-placeholder
      │    │    │    │         ├── key: (1)
      │    │    │    │         ├── fd: ()-->(11), (1)-->(2-10,12-16,37), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    │    │         ├── group-by
      │    │    │    │         │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:37(bool)
      │    │    │    │         │    ├── grouping columns: instance_types.id:1(int!null)
      │    │    │    │         │    ├── internal-ordering: +1 opt(11)
      │    │    │    │         │    ├── has-placeholder
      │    │    │    │         │    ├── key: (1)
      │    │    │    │         │    ├── fd: ()-->(11), (1)-->(2-16,37), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    │    │         │    ├── left-join (merge)
      │    │    │    │         │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:26(int) true_agg:34(bool) true:36(bool)
      │    │    │    │         │    │    ├── left ordering: +1
      │    │    │    │         │    │    ├── right ordering: +26
      │    │    │    │         │    │    ├── has-placeholder
      │    │    │    │         │    │    ├── fd: ()-->(11), (1)-->(2-10,12-16,34), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16), ()~~>(36)
      │    │    │    │         │    │    ├── ordering: +1 opt(11) [actual: +1]
      │    │    │    │         │    │    ├── select
      │    │    │    │         │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:34(bool)
      │    │    │    │         │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12-16,34), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    │    │         │    │    │    ├── ordering: +1 opt(11) [actual: +1]
      │    │    │    │         │    │    │    ├── group-by
      │    │    │    │         │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:34(bool)
      │    │    │    │         │    │    │    │    ├── grouping columns: instance_types.id:1(int!null)
      │    │    │    │         │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    │    ├── fd: ()-->(11), (1)-->(2-16,34), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    │    │         │    │    │    │    ├── ordering: +1 opt(11) [actual: +1]
      │    │    │    │         │    │    │    │    ├── left-join (merge)
      │    │    │    │         │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool!null) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:33(bool)
      │    │    │    │         │    │    │    │    │    ├── left ordering: +1
      │    │    │    │         │    │    │    │    │    ├── right ordering: +18
      │    │    │    │         │    │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12-16), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16), ()~~>(33)
      │    │    │    │         │    │    │    │    │    ├── ordering: +1 opt(11) [actual: +1]
      │    │    │    │         │    │    │    │    │    ├── select
      │    │    │    │         │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool!null) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │         │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    │    │    │    ├── fd: ()-->(11), (1)-->(2-10,12-16), (7,13)~~>(1-6,8-10,12,14-16), (2,13)~~>(1,3-10,12,14-16)
      │    │    │    │         │    │    │    │    │    │    ├── ordering: +1 opt(11) [actual: +1]
      │    │    │    │         │    │    │    │    │    │    ├── scan instance_types
      │    │    │    │         │    │    │    │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │         │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         │    │    │    │    │    │    │    └── ordering: +1 opt(11) [actual: +1]
      │    │    │    │         │    │    │    │    │    │    └── filters
      │    │    │    │         │    │    │    │    │    │         ├── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
      │    │    │    │         │    │    │    │    │    │         └── disabled = false [type=bool, outer=(11), constraints=(/11: [/false - /false]; tight), fd=()-->(11)]
      │    │    │    │         │    │    │    │    │    ├── project
      │    │    │    │         │    │    │    │    │    │    ├── columns: true:33(bool!null) instance_type_projects.instance_type_id:18(int!null)
      │    │    │    │         │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    │    │    ├── fd: ()-->(33)
      │    │    │    │         │    │    │    │    │    │    ├── ordering: +18 opt(33) [actual: +18]
      │    │    │    │         │    │    │    │    │    │    ├── select
      │    │    │    │         │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
      │    │    │    │         │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    │    │    │    ├── key: (18-20)
      │    │    │    │         │    │    │    │    │    │    │    ├── ordering: +18
      │    │    │    │         │    │    │    │    │    │    │    ├── scan instance_type_projects@secondary
      │    │    │    │         │    │    │    │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
      │    │    │    │         │    │    │    │    │    │    │    │    ├── lax-key: (18-20)
      │    │    │    │         │    │    │    │    │    │    │    │    └── ordering: +18
      │    │    │    │         │    │    │    │    │    │    │    └── filters
      │    │    │    │         │    │    │    │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
      │    │    │    │         │    │    │    │    │    │    │         └── project_id = $3 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
      │    │    │    │         │    │    │    │    │    │    └── projections
      │    │    │    │         │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │         │    │    │    │    │    └── filters (true)
      │    │    │    │         │    │    │    │    └── aggregations
      │    │    │    │         │    │    │    │         ├── const-not-null-agg [type=bool, outer=(33)]
      │    │    │    │         │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │         │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │         │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │         │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │         │    │    │    │         ├── const-agg [type=bool, outer=(13)]
      │    │    │    │         │    │    │    │         │    └── variable: instance_types.deleted [type=bool]
      │    │    │    │         │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │    │    │    │         │    └── variable: instance_types.deleted_at [type=timestamp]
      │    │    │    │         │    │    │    │         ├── const-agg [type=timestamp, outer=(15)]
      │    │    │    │         │    │    │    │         │    └── variable: instance_types.created_at [type=timestamp]
      │    │    │    │         │    │    │    │         └── const-agg [type=timestamp, outer=(16)]
      │    │    │    │         │    │    │    │              └── variable: instance_types.updated_at [type=timestamp]
      │    │    │    │         │    │    │    └── filters
      │    │    │    │         │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,34)]
      │    │    │    │         │    │    ├── project
      │    │    │    │         │    │    │    ├── columns: true:36(bool!null) instance_type_projects.instance_type_id:26(int!null)
      │    │    │    │         │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    ├── fd: ()-->(36)
      │    │    │    │         │    │    │    ├── ordering: +26 opt(36) [actual: +26]
      │    │    │    │         │    │    │    ├── select
      │    │    │    │         │    │    │    │    ├── columns: instance_type_projects.instance_type_id:26(int!null) project_id:27(string!null) instance_type_projects.deleted:28(bool!null)
      │    │    │    │         │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    ├── key: (26-28)
      │    │    │    │         │    │    │    │    ├── ordering: +26
      │    │    │    │         │    │    │    │    ├── scan instance_type_projects@secondary
      │    │    │    │         │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:26(int!null) project_id:27(string) instance_type_projects.deleted:28(bool)
      │    │    │    │         │    │    │    │    │    ├── lax-key: (26-28)
      │    │    │    │         │    │    │    │    │    └── ordering: +26
      │    │    │    │         │    │    │    │    └── filters
      │    │    │    │         │    │    │    │         ├── instance_type_projects.deleted = $4 [type=bool, outer=(28), constraints=(/28: (/NULL - ])]
      │    │    │    │         │    │    │    │         ├── instance_type_projects.deleted = $5 [type=bool, outer=(28), constraints=(/28: (/NULL - ])]
      │    │    │    │         │    │    │    │         └── project_id = $6 [type=bool, outer=(27), constraints=(/27: (/NULL - ])]
      │    │    │    │         │    │    │    └── projections
      │    │    │    │         │    │    │         └── true [type=bool]
      │    │    │    │         │    │    └── filters (true)
      │    │    │    │         │    └── aggregations
      │    │    │    │         │         ├── const-not-null-agg [type=bool, outer=(36)]
      │    │    │    │         │         │    └── variable: true [type=bool]
      │    │    │    │         │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │         │    └── variable: name [type=string]
      │    │    │    │         │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │         │    └── variable: memory_mb [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │         │    └── variable: vcpus [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │         │    └── variable: root_gb [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │         │    └── variable: flavorid [type=string]
      │    │    │    │         │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │         │    └── variable: swap [type=int]
      │    │    │    │         │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │         │    └── variable: disabled [type=bool]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │         │    └── variable: is_public [type=bool]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(13)]
      │    │    │    │         │         │    └── variable: instance_types.deleted [type=bool]
      │    │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │         │    └── variable: instance_types.deleted_at [type=timestamp]
      │    │    │    │         │         ├── const-agg [type=timestamp, outer=(15)]
      │    │    │    │         │         │    └── variable: instance_types.created_at [type=timestamp]
      │    │    │    │         │         └── const-agg [type=timestamp, outer=(16)]
      │    │    │    │         │              └── variable: instance_types.updated_at [type=timestamp]
      │    │    │    │         └── filters
      │    │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,37)]
      │    │    │    └── placeholder: $7 [type=int]
      │    │    └── placeholder: $8 [type=int]
      │    └── filters
      │         └── instance_type_extra_specs_1.deleted = $9 [type=bool, outer=(43), constraints=(/43: (/NULL - ])]
      └── filters (true)

opt
select anon_1.instance_types_created_at as anon_1_instance_types_created_at,
       anon_1.instance_types_updated_at as anon_1_instance_types_updated_at,
       anon_1.instance_types_deleted_at as anon_1_instance_types_deleted_at,
       anon_1.instance_types_deleted as anon_1_instance_types_deleted,
       anon_1.instance_types_id as anon_1_instance_types_id,
       anon_1.instance_types_name as anon_1_instance_types_name,
       anon_1.instance_types_memory_mb as anon_1_instance_types_memory_mb,
       anon_1.instance_types_vcpus as anon_1_instance_types_vcpus,
       anon_1.instance_types_root_gb as anon_1_instance_types_root_gb,
       anon_1.instance_types_ephemeral_gb as anon_1_instance_types_ephemeral_gb,
       anon_1.instance_types_flavorid as anon_1_instance_types_flavorid,
       anon_1.instance_types_swap as anon_1_instance_types_swap,
       anon_1.instance_types_rxtx_factor as anon_1_instance_types_rxtx_factor,
       anon_1.instance_types_vcpu_weight as anon_1_instance_types_vcpu_weight,
       anon_1.instance_types_disabled as anon_1_instance_types_disabled,
       anon_1.instance_types_is_public as anon_1_instance_types_is_public,
       instance_type_extra_specs_1.created_at as instance_type_extra_specs_1_created_at,
       instance_type_extra_specs_1.updated_at as instance_type_extra_specs_1_updated_at,
       instance_type_extra_specs_1.deleted_at as instance_type_extra_specs_1_deleted_at,
       instance_type_extra_specs_1.deleted as instance_type_extra_specs_1_deleted,
       instance_type_extra_specs_1.id as instance_type_extra_specs_1_id,
       instance_type_extra_specs_1."key" as instance_type_extra_specs_1_key,
       instance_type_extra_specs_1.value as instance_type_extra_specs_1_value,
       instance_type_extra_specs_1.instance_type_id as instance_type_extra_specs_1_instance_type_id
from (select instance_types.created_at as instance_types_created_at,
             instance_types.updated_at as instance_types_updated_at,
             instance_types.deleted_at as instance_types_deleted_at,
             instance_types.deleted as instance_types_deleted,
             instance_types.id as instance_types_id,
             instance_types.name as instance_types_name,
             instance_types.memory_mb as instance_types_memory_mb,
             instance_types.vcpus as instance_types_vcpus,
             instance_types.root_gb as instance_types_root_gb,
             instance_types.ephemeral_gb as instance_types_ephemeral_gb,
             instance_types.flavorid as instance_types_flavorid,
             instance_types.swap as instance_types_swap,
             instance_types.rxtx_factor as instance_types_rxtx_factor,
             instance_types.vcpu_weight as instance_types_vcpu_weight,
             instance_types.disabled as instance_types_disabled,
             instance_types.is_public as instance_types_is_public
      from instance_types
      where instance_types.deleted = $1
            and (instance_types.is_public = true
                 or (exists (select 1
                             from instance_type_projects
                             where instance_type_projects.instance_type_id = instance_types.id
                                   and instance_type_projects.deleted = $2
                                   and instance_type_projects.project_id = $3)))
            and instance_types.flavorid = $4
      order by instance_types.deleted asc, instance_types.id asc
      offset $5 rows
      limit $6)
     as anon_1
     left join instance_type_extra_specs as instance_type_extra_specs_1
     on instance_type_extra_specs_1.instance_type_id = anon_1.instance_types_id
        and instance_type_extra_specs_1.deleted = $7
order by anon_1.instance_types_deleted asc,
         anon_1.instance_types_id asc
----
project
 ├── columns: anon_1_instance_types_created_at:15(timestamp) anon_1_instance_types_updated_at:16(timestamp) anon_1_instance_types_deleted_at:14(timestamp) anon_1_instance_types_deleted:13(bool) anon_1_instance_types_id:1(int!null) anon_1_instance_types_name:2(string) anon_1_instance_types_memory_mb:3(int) anon_1_instance_types_vcpus:4(int) anon_1_instance_types_root_gb:5(int) anon_1_instance_types_ephemeral_gb:6(int) anon_1_instance_types_flavorid:7(string) anon_1_instance_types_swap:8(int) anon_1_instance_types_rxtx_factor:9(float) anon_1_instance_types_vcpu_weight:10(int) anon_1_instance_types_disabled:11(bool) anon_1_instance_types_is_public:12(bool) instance_type_extra_specs_1_created_at:34(timestamp) instance_type_extra_specs_1_updated_at:35(timestamp) instance_type_extra_specs_1_deleted_at:33(timestamp) instance_type_extra_specs_1_deleted:32(bool) instance_type_extra_specs_1_id:28(int) instance_type_extra_specs_1_key:29(string) instance_type_extra_specs_1_value:30(string) instance_type_extra_specs_1_instance_type_id:31(int)
 ├── side-effects, has-placeholder
 ├── key: (1,28)
 ├── fd: (1)-->(2-16), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
 ├── ordering: +13,+1
 └── left-join (lookup instance_type_extra_specs)
      ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) value:30(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool) instance_type_extra_specs_1.deleted_at:33(timestamp) instance_type_extra_specs_1.created_at:34(timestamp) instance_type_extra_specs_1.updated_at:35(timestamp)
      ├── key columns: [28] = [28]
      ├── side-effects, has-placeholder
      ├── key: (1,28)
      ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29-35), (29,31,32)~~>(28,30,33-35)
      ├── ordering: +13,+1
      ├── left-join (lookup instance_type_extra_specs@secondary)
      │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool) instance_type_extra_specs_1.id:28(int) key:29(string) instance_type_extra_specs_1.instance_type_id:31(int) instance_type_extra_specs_1.deleted:32(bool)
      │    ├── key columns: [1] = [31]
      │    ├── side-effects, has-placeholder
      │    ├── key: (1,28)
      │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), (28)-->(29,31,32), (29,31,32)~~>(28)
      │    ├── ordering: +13,+1
      │    ├── limit
      │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    ├── internal-ordering: +13,+1
      │    │    ├── side-effects, has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    ├── ordering: +13,+1
      │    │    ├── offset
      │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    ├── internal-ordering: +13,+1
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    ├── ordering: +13,+1
      │    │    │    ├── sort
      │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │    ├── ordering: +13,+1
      │    │    │    │    └── select
      │    │    │    │         ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │         ├── has-placeholder
      │    │    │    │         ├── key: (1)
      │    │    │    │         ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         ├── group-by
      │    │    │    │         │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) true_agg:26(bool)
      │    │    │    │         │    ├── grouping columns: instance_types.id:1(int!null)
      │    │    │    │         │    ├── internal-ordering: +1
      │    │    │    │         │    ├── has-placeholder
      │    │    │    │         │    ├── key: (1)
      │    │    │    │         │    ├── fd: (1)-->(2-16,26), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         │    ├── left-join (merge)
      │    │    │    │         │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp) instance_type_projects.instance_type_id:18(int) true:25(bool)
      │    │    │    │         │    │    ├── left ordering: +1
      │    │    │    │         │    │    ├── right ordering: +18
      │    │    │    │         │    │    ├── has-placeholder
      │    │    │    │         │    │    ├── fd: (1)-->(2-16), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16), ()~~>(25)
      │    │    │    │         │    │    ├── ordering: +1
      │    │    │    │         │    │    ├── select
      │    │    │    │         │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool!null) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │         │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    ├── fd: (1)-->(2-16), (7,13)-->(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         │    │    │    ├── ordering: +1
      │    │    │    │         │    │    │    ├── scan instance_types
      │    │    │    │         │    │    │    │    ├── columns: instance_types.id:1(int!null) name:2(string) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) instance_types.deleted:13(bool) instance_types.deleted_at:14(timestamp) instance_types.created_at:15(timestamp) instance_types.updated_at:16(timestamp)
      │    │    │    │         │    │    │    │    ├── key: (1)
      │    │    │    │         │    │    │    │    ├── fd: (1)-->(2-16), (7,13)~~>(1-6,8-12,14-16), (2,13)~~>(1,3-12,14-16)
      │    │    │    │         │    │    │    │    └── ordering: +1
      │    │    │    │         │    │    │    └── filters
      │    │    │    │         │    │    │         ├── instance_types.deleted = $1 [type=bool, outer=(13), constraints=(/13: (/NULL - ])]
      │    │    │    │         │    │    │         └── flavorid = $4 [type=bool, outer=(7), constraints=(/7: (/NULL - ])]
      │    │    │    │         │    │    ├── project
      │    │    │    │         │    │    │    ├── columns: true:25(bool!null) instance_type_projects.instance_type_id:18(int!null)
      │    │    │    │         │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    ├── fd: ()-->(25)
      │    │    │    │         │    │    │    ├── ordering: +18 opt(25) [actual: +18]
      │    │    │    │         │    │    │    ├── select
      │    │    │    │         │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string!null) instance_type_projects.deleted:20(bool!null)
      │    │    │    │         │    │    │    │    ├── has-placeholder
      │    │    │    │         │    │    │    │    ├── key: (18-20)
      │    │    │    │         │    │    │    │    ├── ordering: +18
      │    │    │    │         │    │    │    │    ├── scan instance_type_projects@secondary
      │    │    │    │         │    │    │    │    │    ├── columns: instance_type_projects.instance_type_id:18(int!null) project_id:19(string) instance_type_projects.deleted:20(bool)
      │    │    │    │         │    │    │    │    │    ├── lax-key: (18-20)
      │    │    │    │         │    │    │    │    │    └── ordering: +18
      │    │    │    │         │    │    │    │    └── filters
      │    │    │    │         │    │    │    │         ├── instance_type_projects.deleted = $2 [type=bool, outer=(20), constraints=(/20: (/NULL - ])]
      │    │    │    │         │    │    │    │         └── project_id = $3 [type=bool, outer=(19), constraints=(/19: (/NULL - ])]
      │    │    │    │         │    │    │    └── projections
      │    │    │    │         │    │    │         └── true [type=bool]
      │    │    │    │         │    │    └── filters (true)
      │    │    │    │         │    └── aggregations
      │    │    │    │         │         ├── const-not-null-agg [type=bool, outer=(25)]
      │    │    │    │         │         │    └── variable: true [type=bool]
      │    │    │    │         │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │         │    └── variable: name [type=string]
      │    │    │    │         │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │         │    └── variable: memory_mb [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │         │    └── variable: vcpus [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │         │    └── variable: root_gb [type=int]
      │    │    │    │         │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │         │    └── variable: flavorid [type=string]
      │    │    │    │         │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │         │    └── variable: swap [type=int]
      │    │    │    │         │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │         │    └── variable: disabled [type=bool]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │         │    └── variable: is_public [type=bool]
      │    │    │    │         │         ├── const-agg [type=bool, outer=(13)]
      │    │    │    │         │         │    └── variable: instance_types.deleted [type=bool]
      │    │    │    │         │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │         │    └── variable: instance_types.deleted_at [type=timestamp]
      │    │    │    │         │         ├── const-agg [type=timestamp, outer=(15)]
      │    │    │    │         │         │    └── variable: instance_types.created_at [type=timestamp]
      │    │    │    │         │         └── const-agg [type=timestamp, outer=(16)]
      │    │    │    │         │              └── variable: instance_types.updated_at [type=timestamp]
      │    │    │    │         └── filters
      │    │    │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,26)]
      │    │    │    └── placeholder: $5 [type=int]
      │    │    └── placeholder: $6 [type=int]
      │    └── filters
      │         └── instance_type_extra_specs_1.deleted = $7 [type=bool, outer=(32), constraints=(/32: (/NULL - ])]
      └── filters (true)

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public
      from flavors
      where (flavors.is_public = true
             or (exists (select 1
                         from flavor_projects
                         where flavor_projects.flavor_id = flavors.id
                               and flavor_projects.project_id = $1)))
            and flavors.id = $2
      offset $3 rows
      limit $4)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
----
project
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) flavor_extra_specs_1_created_at:29(timestamp) flavor_extra_specs_1_updated_at:30(timestamp) flavor_extra_specs_1_id:25(int) flavor_extra_specs_1_key:26(string) flavor_extra_specs_1_value:27(string) flavor_extra_specs_1_flavor_id:28(int)
 ├── side-effects, has-placeholder
 ├── key: (1,25)
 ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
 └── right-join
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,25)
      ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), (25)-->(26-30), (26,28)-->(25,27,29,30)
      ├── scan flavor_extra_specs_1
      │    ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      │    ├── key: (25)
      │    └── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
      ├── limit
      │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    ├── side-effects, has-placeholder
      │    ├── key: (1)
      │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    ├── offset
      │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    ├── has-placeholder
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    ├── select
      │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    ├── has-placeholder
      │    │    │    ├── key: (1)
      │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    ├── group-by
      │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
      │    │    │    │    ├── grouping columns: flavors.id:1(int!null)
      │    │    │    │    ├── internal-ordering: +1
      │    │    │    │    ├── has-placeholder
      │    │    │    │    ├── key: (1)
      │    │    │    │    ├── fd: (1)-->(2-12,14,15,23), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    ├── left-join (merge)
      │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:22(bool)
      │    │    │    │    │    ├── left ordering: +1
      │    │    │    │    │    ├── right ordering: +17
      │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15), ()~~>(22)
      │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    ├── select
      │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    ├── ordering: +1
      │    │    │    │    │    │    ├── scan flavors
      │    │    │    │    │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
      │    │    │    │    │    │    │    ├── key: (1)
      │    │    │    │    │    │    │    ├── fd: (1)-->(2-12,14,15), (7)-->(1-6,8-12,14,15), (2)-->(1,3-12,14,15)
      │    │    │    │    │    │    │    └── ordering: +1
      │    │    │    │    │    │    └── filters
      │    │    │    │    │    │         └── flavors.id = $2 [type=bool, outer=(1), constraints=(/1: (/NULL - ])]
      │    │    │    │    │    ├── project
      │    │    │    │    │    │    ├── columns: true:22(bool!null) flavor_projects.flavor_id:17(int!null)
      │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    ├── fd: ()-->(22)
      │    │    │    │    │    │    ├── ordering: +17 opt(22) [actual: +17]
      │    │    │    │    │    │    ├── select
      │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    ├── has-placeholder
      │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    ├── ordering: +17
      │    │    │    │    │    │    │    ├── scan flavor_projects@secondary
      │    │    │    │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
      │    │    │    │    │    │    │    │    ├── key: (17,18)
      │    │    │    │    │    │    │    │    └── ordering: +17
      │    │    │    │    │    │    │    └── filters
      │    │    │    │    │    │    │         ├── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
      │    │    │    │    │    │    │         └── flavor_projects.flavor_id = $2 [type=bool, outer=(17), constraints=(/17: (/NULL - ])]
      │    │    │    │    │    │    └── projections
      │    │    │    │    │    │         └── true [type=bool]
      │    │    │    │    │    └── filters (true)
      │    │    │    │    └── aggregations
      │    │    │    │         ├── const-not-null-agg [type=bool, outer=(22)]
      │    │    │    │         │    └── variable: true [type=bool]
      │    │    │    │         ├── const-agg [type=string, outer=(2)]
      │    │    │    │         │    └── variable: name [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(3)]
      │    │    │    │         │    └── variable: memory_mb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(4)]
      │    │    │    │         │    └── variable: vcpus [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(5)]
      │    │    │    │         │    └── variable: root_gb [type=int]
      │    │    │    │         ├── const-agg [type=int, outer=(6)]
      │    │    │    │         │    └── variable: ephemeral_gb [type=int]
      │    │    │    │         ├── const-agg [type=string, outer=(7)]
      │    │    │    │         │    └── variable: flavorid [type=string]
      │    │    │    │         ├── const-agg [type=int, outer=(8)]
      │    │    │    │         │    └── variable: swap [type=int]
      │    │    │    │         ├── const-agg [type=float, outer=(9)]
      │    │    │    │         │    └── variable: rxtx_factor [type=float]
      │    │    │    │         ├── const-agg [type=int, outer=(10)]
      │    │    │    │         │    └── variable: vcpu_weight [type=int]
      │    │    │    │         ├── const-agg [type=bool, outer=(11)]
      │    │    │    │         │    └── variable: disabled [type=bool]
      │    │    │    │         ├── const-agg [type=bool, outer=(12)]
      │    │    │    │         │    └── variable: is_public [type=bool]
      │    │    │    │         ├── const-agg [type=timestamp, outer=(14)]
      │    │    │    │         │    └── variable: flavors.created_at [type=timestamp]
      │    │    │    │         └── const-agg [type=timestamp, outer=(15)]
      │    │    │    │              └── variable: flavors.updated_at [type=timestamp]
      │    │    │    └── filters
      │    │    │         └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,23)]
      │    │    └── placeholder: $3 [type=int]
      │    └── placeholder: $4 [type=int]
      └── filters
           └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,28), constraints=(/1: (/NULL - ]; /28: (/NULL - ]), fd=(1)==(28), (28)==(1)]

opt
select anon_1.flavors_created_at as anon_1_flavors_created_at,
       anon_1.flavors_updated_at as anon_1_flavors_updated_at,
       anon_1.flavors_id as anon_1_flavors_id,
       anon_1.flavors_name as anon_1_flavors_name,
       anon_1.flavors_memory_mb as anon_1_flavors_memory_mb,
       anon_1.flavors_vcpus as anon_1_flavors_vcpus,
       anon_1.flavors_root_gb as anon_1_flavors_root_gb,
       anon_1.flavors_ephemeral_gb as anon_1_flavors_ephemeral_gb,
       anon_1.flavors_flavorid as anon_1_flavors_flavorid,
       anon_1.flavors_swap as anon_1_flavors_swap,
       anon_1.flavors_rxtx_factor as anon_1_flavors_rxtx_factor,
       anon_1.flavors_vcpu_weight as anon_1_flavors_vcpu_weight,
       anon_1.flavors_disabled as anon_1_flavors_disabled,
       anon_1.flavors_is_public as anon_1_flavors_is_public,
       anon_1.flavors_description as anon_1_flavors_description,
       flavor_extra_specs_1.created_at as flavor_extra_specs_1_created_at,
       flavor_extra_specs_1.updated_at as flavor_extra_specs_1_updated_at,
       flavor_extra_specs_1.id as flavor_extra_specs_1_id,
       flavor_extra_specs_1."key" as flavor_extra_specs_1_key,
       flavor_extra_specs_1.value as flavor_extra_specs_1_value,
       flavor_extra_specs_1.flavor_id as flavor_extra_specs_1_flavor_id
from (select flavors.created_at as flavors_created_at,
             flavors.updated_at as flavors_updated_at,
             flavors.id as flavors_id,
             flavors.name as flavors_name,
             flavors.memory_mb as flavors_memory_mb,
             flavors.vcpus as flavors_vcpus,
             flavors.root_gb as flavors_root_gb,
             flavors.ephemeral_gb as flavors_ephemeral_gb,
             flavors.flavorid as flavors_flavorid,
             flavors.swap as flavors_swap,
             flavors.rxtx_factor as flavors_rxtx_factor,
             flavors.vcpu_weight as flavors_vcpu_weight,
             flavors.disabled as flavors_disabled,
             flavors.is_public as flavors_is_public,
             flavors.description as flavors_description
      from flavors
      where flavors.is_public = true
            or (exists (select 1
                        from flavor_projects
                        where flavor_projects.flavor_id = flavors.id
                              and flavor_projects.project_id = $1))
      order by flavors.flavorid asc, flavors.id asc
      limit $2)
     as anon_1
     left join flavor_extra_specs as flavor_extra_specs_1
     on flavor_extra_specs_1.flavor_id = anon_1.flavors_id
order by anon_1.flavors_flavorid asc, anon_1.flavors_id asc
----
sort
 ├── columns: anon_1_flavors_created_at:14(timestamp) anon_1_flavors_updated_at:15(timestamp) anon_1_flavors_id:1(int!null) anon_1_flavors_name:2(string) anon_1_flavors_memory_mb:3(int) anon_1_flavors_vcpus:4(int) anon_1_flavors_root_gb:5(int) anon_1_flavors_ephemeral_gb:6(int) anon_1_flavors_flavorid:7(string) anon_1_flavors_swap:8(int) anon_1_flavors_rxtx_factor:9(float) anon_1_flavors_vcpu_weight:10(int) anon_1_flavors_disabled:11(bool) anon_1_flavors_is_public:12(bool) anon_1_flavors_description:13(string) flavor_extra_specs_1_created_at:29(timestamp) flavor_extra_specs_1_updated_at:30(timestamp) flavor_extra_specs_1_id:25(int) flavor_extra_specs_1_key:26(string) flavor_extra_specs_1_value:27(string) flavor_extra_specs_1_flavor_id:28(int)
 ├── side-effects, has-placeholder
 ├── key: (1,25)
 ├── fd: (1)-->(2-15), (7)-->(1-6,8-15), (2)-->(1,3-15), (25)-->(26-30), (26,28)-->(25,27,29,30)
 ├── ordering: +7
 └── project
      ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
      ├── side-effects, has-placeholder
      ├── key: (1,25)
      ├── fd: (1)-->(2-15), (7)-->(1-6,8-15), (2)-->(1,3-15), (25)-->(26-30), (26,28)-->(25,27,29,30)
      └── right-join
           ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool) flavor_extra_specs_1.id:25(int) key:26(string) value:27(string) flavor_extra_specs_1.flavor_id:28(int) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
           ├── side-effects, has-placeholder
           ├── key: (1,25)
           ├── fd: (1)-->(2-15,23), (7)-->(1-6,8-15), (2)-->(1,3-15), (25)-->(26-30), (26,28)-->(25,27,29,30)
           ├── scan flavor_extra_specs_1
           │    ├── columns: flavor_extra_specs_1.id:25(int!null) key:26(string!null) value:27(string) flavor_extra_specs_1.flavor_id:28(int!null) flavor_extra_specs_1.created_at:29(timestamp) flavor_extra_specs_1.updated_at:30(timestamp)
           │    ├── key: (25)
           │    └── fd: (25)-->(26-30), (26,28)-->(25,27,29,30)
           ├── limit
           │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    ├── internal-ordering: +7
           │    ├── side-effects, has-placeholder
           │    ├── key: (1)
           │    ├── fd: (1)-->(2-15,23), (7)-->(1-6,8-15), (2)-->(1,3-15)
           │    ├── sort
           │    │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │    ├── has-placeholder
           │    │    ├── key: (1)
           │    │    ├── fd: (1)-->(2-15,23), (7)-->(1-6,8-15), (2)-->(1,3-15)
           │    │    ├── ordering: +7
           │    │    └── select
           │    │         ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │         ├── has-placeholder
           │    │         ├── key: (1)
           │    │         ├── fd: (1)-->(2-15,23), (7)-->(1-6,8-15), (2)-->(1,3-15)
           │    │         ├── group-by
           │    │         │    ├── columns: flavors.id:1(int!null) name:2(string) memory_mb:3(int) vcpus:4(int) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string) swap:8(int) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) true_agg:23(bool)
           │    │         │    ├── grouping columns: flavors.id:1(int!null)
           │    │         │    ├── internal-ordering: +1
           │    │         │    ├── has-placeholder
           │    │         │    ├── key: (1)
           │    │         │    ├── fd: (1)-->(2-15,23), (7)-->(1-6,8-15), (2)-->(1,3-15)
           │    │         │    ├── left-join (merge)
           │    │         │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp) flavor_projects.flavor_id:17(int) true:22(bool)
           │    │         │    │    ├── left ordering: +1
           │    │         │    │    ├── right ordering: +17
           │    │         │    │    ├── has-placeholder
           │    │         │    │    ├── fd: (1)-->(2-15), (7)-->(1-6,8-15), (2)-->(1,3-15), ()~~>(22)
           │    │         │    │    ├── ordering: +1
           │    │         │    │    ├── scan flavors
           │    │         │    │    │    ├── columns: flavors.id:1(int!null) name:2(string!null) memory_mb:3(int!null) vcpus:4(int!null) root_gb:5(int) ephemeral_gb:6(int) flavorid:7(string!null) swap:8(int!null) rxtx_factor:9(float) vcpu_weight:10(int) disabled:11(bool) is_public:12(bool) description:13(string) flavors.created_at:14(timestamp) flavors.updated_at:15(timestamp)
           │    │         │    │    │    ├── key: (1)
           │    │         │    │    │    ├── fd: (1)-->(2-15), (7)-->(1-6,8-15), (2)-->(1,3-15)
           │    │         │    │    │    └── ordering: +1
           │    │         │    │    ├── project
           │    │         │    │    │    ├── columns: true:22(bool!null) flavor_projects.flavor_id:17(int!null)
           │    │         │    │    │    ├── has-placeholder
           │    │         │    │    │    ├── fd: ()-->(22)
           │    │         │    │    │    ├── ordering: +17 opt(22) [actual: +17]
           │    │         │    │    │    ├── select
           │    │         │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │         │    │    │    │    ├── has-placeholder
           │    │         │    │    │    │    ├── key: (17,18)
           │    │         │    │    │    │    ├── ordering: +17
           │    │         │    │    │    │    ├── scan flavor_projects@secondary
           │    │         │    │    │    │    │    ├── columns: flavor_projects.flavor_id:17(int!null) project_id:18(string!null)
           │    │         │    │    │    │    │    ├── key: (17,18)
           │    │         │    │    │    │    │    └── ordering: +17
           │    │         │    │    │    │    └── filters
           │    │         │    │    │    │         └── project_id = $1 [type=bool, outer=(18), constraints=(/18: (/NULL - ])]
           │    │         │    │    │    └── projections
           │    │         │    │    │         └── true [type=bool]
           │    │         │    │    └── filters (true)
           │    │         │    └── aggregations
           │    │         │         ├── const-not-null-agg [type=bool, outer=(22)]
           │    │         │         │    └── variable: true [type=bool]
           │    │         │         ├── const-agg [type=string, outer=(2)]
           │    │         │         │    └── variable: name [type=string]
           │    │         │         ├── const-agg [type=int, outer=(3)]
           │    │         │         │    └── variable: memory_mb [type=int]
           │    │         │         ├── const-agg [type=int, outer=(4)]
           │    │         │         │    └── variable: vcpus [type=int]
           │    │         │         ├── const-agg [type=int, outer=(5)]
           │    │         │         │    └── variable: root_gb [type=int]
           │    │         │         ├── const-agg [type=int, outer=(6)]
           │    │         │         │    └── variable: ephemeral_gb [type=int]
           │    │         │         ├── const-agg [type=string, outer=(7)]
           │    │         │         │    └── variable: flavorid [type=string]
           │    │         │         ├── const-agg [type=int, outer=(8)]
           │    │         │         │    └── variable: swap [type=int]
           │    │         │         ├── const-agg [type=float, outer=(9)]
           │    │         │         │    └── variable: rxtx_factor [type=float]
           │    │         │         ├── const-agg [type=int, outer=(10)]
           │    │         │         │    └── variable: vcpu_weight [type=int]
           │    │         │         ├── const-agg [type=bool, outer=(11)]
           │    │         │         │    └── variable: disabled [type=bool]
           │    │         │         ├── const-agg [type=bool, outer=(12)]
           │    │         │         │    └── variable: is_public [type=bool]
           │    │         │         ├── const-agg [type=string, outer=(13)]
           │    │         │         │    └── variable: description [type=string]
           │    │         │         ├── const-agg [type=timestamp, outer=(14)]
           │    │         │         │    └── variable: flavors.created_at [type=timestamp]
           │    │         │         └── const-agg [type=timestamp, outer=(15)]
           │    │         │              └── variable: flavors.updated_at [type=timestamp]
           │    │         └── filters
           │    │              └── (is_public = true) OR (true_agg IS NOT NULL) [type=bool, outer=(12,23)]
           │    └── placeholder: $2 [type=int]
           └── filters
                └── flavor_extra_specs_1.flavor_id = flavors.id [type=bool, outer=(1,28), constraints=(/1: (/NULL - ]; /28: (/NULL - ]), fd=(1)==(28), (28)==(1)]
