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

nGQL like 'UNION'/'INTERSECT'/'MINUS' can not execute successfully with predefined variables #5339

Closed
xiaominyan88 opened this issue Feb 14, 2023 · 4 comments
Assignees

Comments

@xiaominyan88
Copy link

Cluster Info
metad: 3
graphd: 6
storaged: 6

Space Config
VID_TYPE: FIX_STRING(30)
Replica Factor: 1
Partition Num: 30

Problem
I am testing Nebula Graph according to LDBC SNB benchmark, and when I try to finish the requirement of interactive/complex/1, the problem comes out. in case of the nGQL for LDBC SNB "interactive/complex/1" is very long, every part of the nGQL is as follows:
the user defined variable $a:

$a=GO 1 TO 3 STEPS FROM "19791209314115" OVER person_knows_person WHERE properties($$).firstName == "Guillermo" YIELD dst(edge) AS personID,properties($$).firstName AS personFirstName,properties($$).lastName AS personLastName,properties($$).birthday AS personBirthDay,properties($$).creationDate AS personCreationDate,properties($$).gender AS personGender,properties($$).browserUsed AS personBrowserUsed,properties($$).locationIP AS personLocationIP,toSet(split(properties($$).email,";")) AS personEmail,toSet(split(properties($$).language,";")) AS personSpeaks | GROUP BY $-.personID,$-.personLastName,$-.personBirthDay,$-.personCreationDate,$-.personGender,$-.personBrowserUsed,$-.personLocationIP,$-.personEmail,$-.personSpeaks YIELD $-.personID AS personID,$-.personLastName AS personLastName,$-.personBirthDay AS personBirthDay,$-.personCreationDate AS personCreationDate,$-.personGender AS personGender,$-.personBrowserUsed AS personBrowserUsed,$-.personLocationIP AS personLocationIP,$-.personEmail AS personEmail,$-.personSpeaks AS personSpeaks;

the user defined variable $a1:

$a1=GO FROM $a.personID OVER person_workAt_organisation WHERE properties($$).type == "company" YIELD $a.personID AS personID,$a.personLastName AS personLastName,$a.personBirthDay AS personBirthDay,$a.personCreationDate AS personCreationDate,$a.personGender AS personGender,$a.personBrowserUsed AS personBrowserUsed,$a.personLocationIP AS personLocationIP,$a.personEmail AS personEmail,$a.personSpeaks AS personSpeaks,properties($$).name AS companyName,properties(edge).workFrom AS workFrom,dst(edge) AS companyID | GO FROM $-.companyID OVER organisation_isLocatedIn_place WHERE properties($$).type == "country" YIELD $-.personID AS personID,$-.personLastName AS personLastName,$-.personBirthDay AS personBirthDay,$-.personCreationDate AS personCreationDate,$-.personGender AS personGender,$-.personBrowserUsed AS personBrowserUsed,$-.personLocationIP AS personLocationIP,$-.personEmail AS personEmail,$-.personSpeaks AS personSpeaks,$-.companyName AS companyName,$-.workFrom AS workFrom,properties($$).name AS companyBelongToCountry | GO FROM $-.personID OVER person_studyAt_organisation WHERE properties($$).type == "university" YIELD $-.personID AS personID,$-.personLastName AS personLastName,$-.personBirthDay AS personBirthDay,$-.personCreationDate AS personCreationDate,$-.personGender AS personGender,$-.personBrowserUsed AS personBrowserUsed,$-.personLocationIP AS personLocationIP,$-.personEmail AS personEmail,$-.personSpeaks AS personSpeaks,$-.companyName AS companyName,$-.workFrom AS workFrom,$-.companyBelongToCountry AS companyBelongToCountry,dst(edge) AS universityID,properties($$).name AS universityName,properties(edge).classYear AS classYear | GO FROM $-.universityID OVER organisation_isLocatedIn_place WHERE properties($$).type == "city" YIELD $-.personID AS personID,$-.personLastName AS personLastName,$-.personBirthDay AS personBirthDay,$-.personCreationDate AS personCreationDate,$-.personGender AS personGender,$-.personBrowserUsed AS personBrowserUsed,$-.personLocationIP AS personLocationIP,$-.personEmail AS personEmail,$-.personSpeaks AS personSpeaks,$-.companyName AS companyName,$-.workFrom AS workFrom,$-.companyBelongToCountry AS companyBelongToCountry,$-.universityName AS universityName,$-.classYear AS classYear,properties($$).name AS universityBelongToCity | GO FROM $-.personID OVER person_isLocatedIn_place WHERE properties($$).type == "city" YIELD $-.personID AS personID,$-.personLastName AS personLastName,$-.personBirthDay AS personBirthDay,$-.personCreationDate AS personCreationDate,$-.personGender AS personGender,$-.personBrowserUsed AS personBrowserUsed,$-.personLocationIP AS personLocationIP,$-.personEmail AS personEmail,$-.personSpeaks AS personSpeaks,$-.companyName AS companyName,$-.workFrom AS workFrom,$-.companyBelongToCountry AS companyBelongToCountry,$-.universityName AS universityName,$-.classYear AS classYear,$-.universityBelongToCity AS universityBelongToCity,properties($$).name AS cityName;

the $a1 means the data sets from $a is processed through edges to get information about the person both has already worked at some company and has university education experience. To get the information about person who has either worked at some company or has university education experience, I need to get the difference set between the data set from $a and the data set from $a1. However, when I executed my nGQL:

(YIELD $a.personID AS personID,$a.personLastName AS personLastName,$a.personBirthDay AS personBirthDay,$a.personCreationDate AS personCreationDate,$a.personGender AS personGender,$a.personBrowserUsed AS personBrowserUsed,$a.personLocationIP AS personLocationIP,$a.personEmail AS personEmail,$a.personSpeaks AS personSpeaks) MINUS (YIELD $a1.personID AS personID,$a1.personLastName AS personLastName,$a1.personBirthDay AS personBirthDay,$a1.personCreationDate AS personCreationDate,$a1.personGender AS personGender,$a1.personBrowserUsed AS personBrowserUsed,$a1.personLocationIP AS personLocationIP,$a1.personEmail AS personEmail,$a1.personSpeaks AS personSpeaks)

the error occurs:

-1005:`NULL', the srcs should be type of STRING, but was`NULL'

It seems that the operation from nGQL like "UNION","INTERSECT" and "MINUS" can not execute successfully with predefined variables. I hope this bug can be solved as soon as possible.

@xiaominyan88 xiaominyan88 added the type/bug Type: something is unexpected label Feb 14, 2023
@github-actions github-actions bot added affects/none PR/issue: this bug affects none version. severity/none Severity of bug labels Feb 14, 2023
@nevermore3
Copy link
Contributor

This error seems to be a null value at the starting point during the expansion process.

@xiaominyan88
Copy link
Author

This error seems to be a null value at the starting point during the expansion process.
every defined variable has a query result when I do some test, and the nGQL like this:

YIELD "aa" AS name UNION ALL YIELD "bb" AS name

can execute successfully, so I think there may exist bug errors when either side of 'UNION/INTERSECT/MINUS' are from user defined variable

@Sophie-Xie Sophie-Xie added this to the v3.5.0 milestone Feb 27, 2023
@xtcyclist xtcyclist removed type/bug Type: something is unexpected severity/none Severity of bug affects/none PR/issue: this bug affects none version. labels Mar 29, 2023
@nevermore3
Copy link
Contributor

This scenario is supported. You can check whether the data is abnormal. It seems that a NULL value appears at a vertex during runtime.

@Sophie-Xie Sophie-Xie removed this from the v3.5.0 milestone Mar 30, 2023
@QingZ11
Copy link
Contributor

QingZ11 commented May 5, 2023

I have noticed that the issue you created hasn’t been updated for nearly a month, is this issue been resolved? If not resolved, can you provide some more information? If solved, can you close this issue?

Thanks a lot for your contribution anyway 😊

@QingZ11 QingZ11 closed this as completed Sep 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants