Skip to content

Commit

Permalink
issue 542 checkin current (incorrect) behavior with partial unique in…
Browse files Browse the repository at this point in the history
…dexes
  • Loading branch information
olirice committed Jul 10, 2024
1 parent 37081f9 commit f75d7af
Show file tree
Hide file tree
Showing 2 changed files with 170 additions and 0 deletions.
116 changes: 116 additions & 0 deletions test/expected/issue_542_partial_unique.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
begin;
create table public.works(
work_id int primary key
);
create table public.readthroughs (
readthrough_id int primary key,
work_id int not null references public.works(work_id),
status text not null
);
select jsonb_pretty(
graphql.resolve($$
{
__type(name: "Works") {
kind
fields {
name
type {
kind
name
}
}
}
}
$$)
);
jsonb_pretty
-------------------------------------------------------
{ +
"data": { +
"__type": { +
"kind": "OBJECT", +
"fields": [ +
{ +
"name": "nodeId", +
"type": { +
"kind": "NON_NULL", +
"name": null +
} +
}, +
{ +
"name": "workId", +
"type": { +
"kind": "NON_NULL", +
"name": null +
} +
}, +
{ +
"name": "readthroughsCollection",+
"type": { +
"kind": "NON_NULL", +
"name": null +
} +
} +
] +
} +
} +
}
(1 row)

/* Creating partial unique referencing status should NOT change the relationship with
the readthroughs to a non-null unique because its partial and other statuses may
have multiple associated readthroughs */
create unique index idx_unique_in_progress_readthrough
on public.readthroughs (work_id)
where status in ('in_progress');
select jsonb_pretty(
graphql.resolve($$
{
__type(name: "Works") {
kind
fields {
name
type {
kind
name
}
}
}
}
$$)
);
jsonb_pretty
---------------------------------------------
{ +
"data": { +
"__type": { +
"kind": "OBJECT", +
"fields": [ +
{ +
"name": "nodeId", +
"type": { +
"kind": "NON_NULL",+
"name": null +
} +
}, +
{ +
"name": "workId", +
"type": { +
"kind": "NON_NULL",+
"name": null +
} +
}, +
{ +
"name": "work", +
"type": { +
"kind": "NON_NULL",+
"name": null +
} +
} +
] +
} +
} +
}
(1 row)

rollback;
54 changes: 54 additions & 0 deletions test/sql/issue_542_partial_unique.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
begin;

create table public.works(
work_id int primary key
);

create table public.readthroughs (
readthrough_id int primary key,
work_id int not null references public.works(work_id),
status text not null
);

select jsonb_pretty(
graphql.resolve($$
{
__type(name: "Works") {
kind
fields {
name
type {
kind
name
}
}
}
}
$$)
);

/* Creating partial unique referencing status should NOT change the relationship with
the readthroughs to a non-null unique because its partial and other statuses may
have multiple associated readthroughs */
create unique index idx_unique_in_progress_readthrough
on public.readthroughs (work_id)
where status in ('in_progress');

select jsonb_pretty(
graphql.resolve($$
{
__type(name: "Works") {
kind
fields {
name
type {
kind
name
}
}
}
}
$$)
);

rollback;

0 comments on commit f75d7af

Please sign in to comment.