Skip to content

Instantly share code, notes, and snippets.

@felipebn
Created October 23, 2018 09:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save felipebn/6db8eac224c20d3354a3b8443894f3d5 to your computer and use it in GitHub Desktop.
Save felipebn/6db8eac224c20d3354a3b8443894f3d5 to your computer and use it in GitHub Desktop.
Example query the error occurs.
MATCH jobPath = (job:Job)<-[toJob:GJC_SUBFAMILY_TO_JOB]-(subJobFamily:SubJobFamily)<-[toSubFamily:GJC_JF_TO_SJF]-(jobFamily:JobFamily)<-[toFamily:GJC_CATALOG_TO_FAMILY]-(jobCatalog:JobCatalog) WHERE job.uuid IN ["cac77ef5-1b47-4d1d-996a-d448a8a859b7"] AND ALL( rel IN [toJob, toSubFamily, toFamily] WHERE rel.min - 2 <= 0 AND rel.max - 2 > 0 ) AND (["8f277b6a-44c4-4e72-9aeb-9d0b1ee18a5c"] IS NOT NULL AND jobCatalog.uuid IN ["8f277b6a-44c4-4e72-9aeb-9d0b1ee18a5c"])
OPTIONAL MATCH jobTypePath = (job)-[jobToType:GJC_JOB_TO_TYPE]->(jobType:JobType)-[jobTypeToPayload:GJC_DETAIL_DEFINITION]->(jobTypePayload:JobCatalogLocalizedPayload) WHERE ALL( rel IN [jobToType] WHERE rel.min - 2 <= 0 AND rel.max - 2 > 0 )
OPTIONAL MATCH reportsToPath = (job)-[reportsTo:GJC_JOB_REPORTS_TO]->(jobToReport:Job)<-[jobToReportToCatalog:GJC_SUBFAMILY_TO_JOB|GJC_JF_TO_SJF|GJC_CATALOG_TO_FAMILY*1..3]-(jobCatalog) WHERE ALL( rel IN ([reportsTo] + jobToReportToCatalog) WHERE rel.min - 2 <= 0 AND rel.max - 2 > 0 )
UNWIND [job, subJobFamily, jobFamily] + COALESCE(FILTER(n IN nodes(reportsToPath) WHERE NOT 'JobCatalog' IN LABELS(n)), []) as categoryItems
MATCH itemToDescription = (categoryItems)-[itemToDescriptions:GJC_CATEGORY_TO_DESCRIPTION]->()-[itemToPayload:GJC_DESCRIPTION]->() WHERE itemToPayload.language IN ["en"] AND ALL( rel IN [itemToPayload, itemToDescriptions] WHERE rel.min - 2 <= 0 AND rel.max - 2 > 0 )
OPTIONAL MATCH itemToDetails=(categoryItems)-[itemDetails:GJC_CATEGORY_TO_DETAIL]->(itemDetail:JobCategoryDetail)-[:GJC_DETAIL_TO_DEFINITION]->(itemDetailDefinition:JobCategoryDetailDefinition)-[itemDetailDefinitionToPayload:GJC_DETAIL_DEFINITION]->(:JobCatalogLocalizedPayload) WHERE itemDetailDefinitionToPayload.language IN (COALESCE(["en"],[]) + itemDetailDefinition.defaultLanguage) AND ALL( rel IN [itemDetails] WHERE rel.min - 2 <= 0 AND rel.max - 2 > 0 )
OPTIONAL MATCH itemDetailToLevels=(itemDetail)-[itemDetailtoLevels:GJC_DETAIL_TO_LEVEL]->(itemDetailLevel:JobCategoryDetailLevel)-[itemDetailLevelToPayload:GJC_DETAIL_LEVEL]->(itemDetailLevelPayload:JobCatalogLocalizedPayload) WHERE itemDetailLevelToPayload.language IN (COALESCE(["en"],[]) + itemDetailDefinition.defaultLanguage) AND ALL( rel IN [itemDetailtoLevels] WHERE rel.min - 2 <= 0 AND rel.max - 2 > 0 )
OPTIONAL MATCH itemDetailCategoryPayload = (itemDetail)-[detailToPayload:GJC_DETAIL_TO_PAYLOAD]-(detailPayload) WHERE detailToPayload.language IN COALESCE(["en"],[]) AND ALL( rel IN [detailToPayload] WHERE rel.min - 2 <= 0 AND rel.max - 2 > 0 )
OPTIONAL MATCH levelToItems=(itemDetailLevel)-[:GJC_LEVEL_TO_ITEM]->()-[:GJC_LEVEL_ITEM]->()
OPTIONAL MATCH (itemDetailDefinition)<-[itemDetailDefinitionGroupToDetail:GJC_DEFINITION_GROUP_TO_DEFINITION]-(itemDetailDefinitionGroup:JobCategoryDetailDefinitionGroup)
OPTIONAL MATCH itemGroupLevels=(itemDetailDefinitionGroup)-[itemDetailtoGroupLevel:GJC_DEFINITION_GROUP_TO_LEVEL]->(itemGroupLevel:JobCategoryDetailLevel)-[itemGroupLevelToPayload:GJC_DETAIL_LEVEL]->(itemGroupLevelPayload:JobCatalogLocalizedPayload) WHERE itemDetailtoGroupLevel.language IN (COALESCE(["en"],[]) + itemDetailDefinition.defaultLanguage)
OPTIONAL MATCH groupLevelToItems=(itemGroupLevel)-[:GJC_LEVEL_TO_ITEM]->()-[:GJC_LEVEL_ITEM]->()
OPTIONAL MATCH (jobCatalog)-[catalogToConfig:GJC_CATALOG_TO_CONFIG]->(configFields:JobCatalogConfigFields)-[configFieldsToComposition:GJC_CONFIG_TO_COMPOSITION]->(composition:JobCategoryDetailDefinitionGroup)-[compositionToPayload:GJC_DETAIL_DEFINITION_GROUP]->(compositionPayload:JobCatalogLocalizedPayload) WHERE configFieldsToComposition.min - 2 <= 0 AND configFieldsToComposition.max - 2 > 0
RETURN *
@felipebn
Copy link
Author

Modified version that also executes fine.

The difference is in the last optional match that is split into two.

MATCH jobPath = (job:Job)<-[toJob:GJC_SUBFAMILY_TO_JOB]-(subJobFamily:SubJobFamily)<-[toSubFamily:GJC_JF_TO_SJF]-(jobFamily:JobFamily)<-[toFamily:GJC_CATALOG_TO_FAMILY]-(jobCatalog:JobCatalog)      WHERE job.uuid IN ["cac77ef5-1b47-4d1d-996a-d448a8a859b7"]           AND ALL(             rel IN [toJob, toSubFamily, toFamily]             WHERE rel.min - 2 <= 0              AND rel.max - 2 > 0           )         AND (["8f277b6a-44c4-4e72-9aeb-9d0b1ee18a5c"] IS NOT NULL AND jobCatalog.uuid IN ["8f277b6a-44c4-4e72-9aeb-9d0b1ee18a5c"])  
OPTIONAL MATCH jobTypePath = (job)-[jobToType:GJC_JOB_TO_TYPE]->(jobType:JobType)-[jobTypeToPayload:GJC_DETAIL_DEFINITION]->(jobTypePayload:JobCatalogLocalizedPayload)         WHERE ALL(             rel IN [jobToType]             WHERE rel.min - 2 <= 0              AND rel.max - 2 > 0           ) 
OPTIONAL MATCH reportsToPath = (job)-[reportsTo:GJC_JOB_REPORTS_TO]->(jobToReport:Job)<-[jobToReportToCatalog:GJC_SUBFAMILY_TO_JOB|GJC_JF_TO_SJF|GJC_CATALOG_TO_FAMILY*1..3]-(jobCatalog)         WHERE ALL(             rel IN ([reportsTo] + jobToReportToCatalog)            WHERE rel.min - 2 <= 0              AND rel.max - 2 > 0           ) 
UNWIND [job, subJobFamily, jobFamily] + COALESCE(FILTER(n IN nodes(reportsToPath) WHERE NOT 'JobCatalog' IN LABELS(n)), []) as categoryItems
 MATCH itemToDescription = (categoryItems)-[itemToDescriptions:GJC_CATEGORY_TO_DESCRIPTION]->()-[itemToPayload:GJC_DESCRIPTION]->()      WHERE itemToPayload.language IN ["en"]                AND ALL(             rel IN [itemToPayload, itemToDescriptions]              WHERE rel.min - 2 <= 0              AND rel.max - 2 > 0           )  
OPTIONAL MATCH itemToDetails=(categoryItems)-[itemDetails:GJC_CATEGORY_TO_DETAIL]->(itemDetail:JobCategoryDetail)-[:GJC_DETAIL_TO_DEFINITION]->(itemDetailDefinition:JobCategoryDetailDefinition)-[itemDetailDefinitionToPayload:GJC_DETAIL_DEFINITION]->(:JobCatalogLocalizedPayload)     WHERE         itemDetailDefinitionToPayload.language IN (COALESCE(["en"],[]) + itemDetailDefinition.defaultLanguage)         AND ALL(            rel IN [itemDetails]             WHERE rel.min - 2 <= 0             AND rel.max - 2 > 0            ) 
OPTIONAL MATCH itemDetailToLevels=(itemDetail)-[itemDetailtoLevels:GJC_DETAIL_TO_LEVEL]->(itemDetailLevel:JobCategoryDetailLevel)-[itemDetailLevelToPayload:GJC_DETAIL_LEVEL]->(itemDetailLevelPayload:JobCatalogLocalizedPayload)      WHERE         itemDetailLevelToPayload.language IN (COALESCE(["en"],[]) + itemDetailDefinition.defaultLanguage)         AND ALL(            rel IN [itemDetailtoLevels]             WHERE rel.min - 2 <= 0             AND rel.max - 2 > 0            ) 
OPTIONAL MATCH itemDetailCategoryPayload = (itemDetail)-[detailToPayload:GJC_DETAIL_TO_PAYLOAD]-(detailPayload)      WHERE         detailToPayload.language IN COALESCE(["en"],[])         AND ALL(            rel IN [detailToPayload]             WHERE rel.min - 2 <= 0             AND rel.max - 2 > 0            ) 
OPTIONAL MATCH levelToItems=(itemDetailLevel)-[:GJC_LEVEL_TO_ITEM]->()-[:GJC_LEVEL_ITEM]->()
OPTIONAL MATCH (itemDetailDefinition)<-[itemDetailDefinitionGroupToDetail:GJC_DEFINITION_GROUP_TO_DEFINITION]-(itemDetailDefinitionGroup:JobCategoryDetailDefinitionGroup) 
OPTIONAL MATCH itemGroupLevels=(itemDetailDefinitionGroup)-[itemDetailtoGroupLevel:GJC_DEFINITION_GROUP_TO_LEVEL]->(itemGroupLevel:JobCategoryDetailLevel)-[itemGroupLevelToPayload:GJC_DETAIL_LEVEL]->(itemGroupLevelPayload:JobCatalogLocalizedPayload)      WHERE         itemDetailtoGroupLevel.language IN (COALESCE(["en"],[]) + itemDetailDefinition.defaultLanguage) 
OPTIONAL MATCH groupLevelToItems=(itemGroupLevel)-[:GJC_LEVEL_TO_ITEM]->()-[:GJC_LEVEL_ITEM]->() 
OPTIONAL MATCH (jobCatalog)-[catalogToConfig:GJC_CATALOG_TO_CONFIG]->(configFields:JobCatalogConfigFields)
OPTIONAL MATCH (configFields)-[configFieldsToComposition:GJC_CONFIG_TO_COMPOSITION]->(composition:JobCategoryDetailDefinitionGroup)-[compositionToPayload:GJC_DETAIL_DEFINITION_GROUP]->(compositionPayload:JobCatalogLocalizedPayload)      WHERE configFieldsToComposition.min - 2 <= 0          AND configFieldsToComposition.max - 2 > 0 
RETURN *

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment