Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make linkprops (including @source/@target) work in conflict selects #7284

Merged
merged 1 commit into from
May 1, 2024

Conversation

msullivan
Copy link
Member

Exclusive constraints on the linkprops themselves still don't work,
though it should be fixable.

Fixes #7263

@@ -76,8 +76,9 @@ abstract link translated_label {

abstract link link_with_unique_property {
property unique_property -> str {
constraint exclusive;
# constraint exclusive;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stray?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a comment

Exclusive constraints on the linkprops themselves still don't work,
though it should be fixable.

Fixes #7263
@msullivan msullivan merged commit 6e6caba into master May 1, 2024
23 checks passed
@msullivan msullivan deleted the lazer-source branch May 1, 2024 06:09
@vpetrovykh vpetrovykh added the backported-5.x PRs that *have* been backported to 5.x (starting with 5.3) label May 2, 2024
vpetrovykh pushed a commit that referenced this pull request May 2, 2024
…7284)

Exclusive constraints on the linkprops themselves still don't work,
though it should be fixable.

Fixes #7263
vpetrovykh pushed a commit that referenced this pull request May 2, 2024
…7284)

Exclusive constraints on the linkprops themselves still don't work,
though it should be fixable.

Fixes #7263
vpetrovykh pushed a commit that referenced this pull request May 2, 2024
…7284)

Exclusive constraints on the linkprops themselves still don't work,
though it should be fixable.

Fixes #7263
msullivan added a commit that referenced this pull request May 14, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
msullivan added a commit that referenced this pull request May 15, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
msullivan added a commit that referenced this pull request May 15, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
vpetrovykh pushed a commit that referenced this pull request May 21, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
vpetrovykh pushed a commit that referenced this pull request May 22, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
vpetrovykh pushed a commit that referenced this pull request May 22, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
vpetrovykh pushed a commit that referenced this pull request May 22, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
vpetrovykh pushed a commit that referenced this pull request May 22, 2024
The regression was introduced in #7284, which made
`utils.subject_substitute` substitute `__subject__` in for the
implicit path prefix. That fixed an issue in some cases, but
introduced an extra level of Set/SelectStmt indirection in
others.

That level of indirection could cause us to emit redundant semijoins
in some cases, which caused a major performance regression on UNLESS
CONFLICT on object level exclusive constraints that referred to a link
using a partial path prefix. (Referring to the link using
`__subject__.` was already slow!)

Fix that by making `subject_substitute` smarter.

The redundant semi-join issue can come up in other cases too, like:
```
select (User, (User,).0.deck);
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backported-5.x PRs that *have* been backported to 5.x (starting with 5.3) to-backport-4.x
Projects
None yet
Development

Successfully merging this pull request may close these issues.

@source breaks on certain update queries
3 participants