diff --git a/fixtures/queryer.json b/fixtures/queryer.json index aa6671f..3571efa 100644 --- a/fixtures/queryer.json +++ b/fixtures/queryer.json @@ -1320,7 +1320,7 @@ " 'id', entity_11.id,", " 'is_primary', contact_9.is_primary,", " 'target', CASE", - " WHEN entity_11.target_type = 'address' THEN", + " WHEN relationship_10.target_type = 'address' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_13.archived,", " 'city', address_12.city,", @@ -1333,7 +1333,7 @@ " WHERE", " NOT entity_13.archived", " AND relationship_10.target_id = entity_13.id))", - " WHEN entity_11.target_type = 'email_address' THEN", + " WHEN relationship_10.target_type = 'email_address' THEN", " ((SELECT jsonb_build_object(", " 'address', email_address_14.address,", " 'archived', entity_15.archived,", @@ -1346,7 +1346,7 @@ " WHERE", " NOT entity_15.archived", " AND relationship_10.target_id = entity_15.id))", - " WHEN entity_11.target_type = 'phone_number' THEN", + " WHEN relationship_10.target_type = 'phone_number' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_17.archived,", " 'created_at', entity_17.created_at,", @@ -1556,7 +1556,7 @@ " 'id', entity_11.id,", " 'is_primary', contact_9.is_primary,", " 'target', CASE", - " WHEN entity_11.target_type = 'address' THEN", + " WHEN relationship_10.target_type = 'address' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_13.archived,", " 'city', address_12.city,", @@ -1569,7 +1569,7 @@ " WHERE", " NOT entity_13.archived", " AND relationship_10.target_id = entity_13.id))", - " WHEN entity_11.target_type = 'email_address' THEN", + " WHEN relationship_10.target_type = 'email_address' THEN", " ((SELECT jsonb_build_object(", " 'address', email_address_14.address,", " 'archived', entity_15.archived,", @@ -1582,7 +1582,7 @@ " WHERE", " NOT entity_15.archived", " AND relationship_10.target_id = entity_15.id))", - " WHEN entity_11.target_type = 'phone_number' THEN", + " WHEN relationship_10.target_type = 'phone_number' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_17.archived,", " 'created_at', entity_17.created_at,", @@ -1989,7 +1989,7 @@ " 'is_primary', contact_11.is_primary,", " 'target',", " CASE", - " WHEN entity_13.target_type = 'address' THEN (", + " WHEN relationship_12.target_type = 'address' THEN (", " (SELECT jsonb_build_object(", " 'archived', entity_15.archived,", " 'city', address_14.city,", @@ -2003,7 +2003,7 @@ " NOT entity_15.archived", " AND relationship_12.target_id = entity_15.id)", " )", - " WHEN entity_13.target_type = 'email_address' THEN (", + " WHEN relationship_12.target_type = 'email_address' THEN (", " (SELECT jsonb_build_object(", " 'address', email_address_16.address,", " 'archived', entity_17.archived,", @@ -2017,7 +2017,7 @@ " NOT entity_17.archived", " AND relationship_12.target_id = entity_17.id)", " )", - " WHEN entity_13.target_type = 'phone_number' THEN (", + " WHEN relationship_12.target_type = 'phone_number' THEN (", " (SELECT jsonb_build_object(", " 'archived', entity_19.archived,", " 'created_at', entity_19.created_at,", diff --git a/src/queryer/compiler.rs b/src/queryer/compiler.rs index de25481..535be8c 100644 --- a/src/queryer/compiler.rs +++ b/src/queryer/compiler.rs @@ -461,10 +461,24 @@ impl<'a> Compiler<'a> { .cloned() .unwrap_or_else(|| format!("{}_t_err", node.parent_alias)); + let mut lookup_key = prop_key.as_str(); + + if let Some(edges) = node.schema.obj.compiled_edges.get() { + if let Some(edge) = edges.get(prop_key) { + if let Some(relation) = self.db.relations.get(&edge.constraint) { + if edge.forward { + lookup_key = &relation.source_columns[0]; + } else { + lookup_key = &relation.destination_columns[0]; + } + } + } + } + if let Some(gf) = grouped_fields { for (t_name, fields_val) in gf { if let Some(fields_arr) = fields_val.as_array() { - if fields_arr.iter().any(|v| v.as_str() == Some(prop_key)) { + if fields_arr.iter().any(|v| v.as_str() == Some(lookup_key)) { owner_alias = table_aliases .get(t_name) .cloned() diff --git a/test_out.txt b/test_out.txt new file mode 100644 index 0000000..a8db1b0 --- /dev/null +++ b/test_out.txt @@ -0,0 +1,27 @@ + Finished `test` profile [unoptimized + debuginfo] target(s) in 0.39s + Running unittests src/lib.rs (target/debug/deps/jspg-d3f18ff3a7e2b386) + +running 1 test +test tests::test_queryer_0_3 ... FAILED + +failures: + +---- tests::test_queryer_0_3 stdout ---- +JSPG_SQL: (SELECT jsonb_strip_nulls((SELECT jsonb_build_object('addresses', (SELECT COALESCE(jsonb_agg(jsonb_build_object('archived', entity_6.archived, 'created_at', entity_6.created_at, 'id', entity_6.id, 'is_primary', contact_4.is_primary, 'target', (SELECT jsonb_build_object('archived', entity_8.archived, 'city', address_7.city, 'created_at', entity_8.created_at, 'id', entity_8.id, 'type', entity_8.type) FROM agreego.address address_7 JOIN agreego.entity entity_8 ON entity_8.id = address_7.id WHERE NOT entity_8.archived AND relationship_5.target_id = entity_8.id), 'type', entity_6.type)), '[]'::jsonb) FROM agreego.contact contact_4 JOIN agreego.relationship relationship_5 ON relationship_5.id = contact_4.id JOIN agreego.entity entity_6 ON entity_6.id = relationship_5.id WHERE NOT entity_6.archived AND relationship_5.target_type = 'address' AND relationship_5.source_id = entity_3.id), 'age', person_1.age, 'archived', entity_3.archived, 'contacts', (SELECT COALESCE(jsonb_agg(jsonb_build_object('archived', entity_11.archived, 'created_at', entity_11.created_at, 'id', entity_11.id, 'is_primary', contact_9.is_primary, 'target', CASE WHEN relationship_10.target_type = 'address' THEN ((SELECT jsonb_build_object('archived', entity_13.archived, 'city', address_12.city, 'created_at', entity_13.created_at, 'id', entity_13.id, 'type', entity_13.type) FROM agreego.address address_12 JOIN agreego.entity entity_13 ON entity_13.id = address_12.id WHERE NOT entity_13.archived AND relationship_10.target_id = entity_13.id)) WHEN relationship_10.target_type = 'email_address' THEN ((SELECT jsonb_build_object('address', email_address_14.address, 'archived', entity_15.archived, 'created_at', entity_15.created_at, 'id', entity_15.id, 'type', entity_15.type) FROM agreego.email_address email_address_14 JOIN agreego.entity entity_15 ON entity_15.id = email_address_14.id WHERE NOT entity_15.archived AND relationship_10.target_id = entity_15.id)) WHEN relationship_10.target_type = 'phone_number' THEN ((SELECT jsonb_build_object('archived', entity_17.archived, 'created_at', entity_17.created_at, 'id', entity_17.id, 'number', phone_number_16.number, 'type', entity_17.type) FROM agreego.phone_number phone_number_16 JOIN agreego.entity entity_17 ON entity_17.id = phone_number_16.id WHERE NOT entity_17.archived AND relationship_10.target_id = entity_17.id)) ELSE NULL END, 'type', entity_11.type)), '[]'::jsonb) FROM agreego.contact contact_9 JOIN agreego.relationship relationship_10 ON relationship_10.id = contact_9.id JOIN agreego.entity entity_11 ON entity_11.id = relationship_10.id WHERE NOT entity_11.archived AND relationship_10.source_id = entity_3.id), 'created_at', entity_3.created_at, 'email_addresses', (SELECT COALESCE(jsonb_agg(jsonb_build_object('archived', entity_20.archived, 'created_at', entity_20.created_at, 'id', entity_20.id, 'is_primary', contact_18.is_primary, 'target', (SELECT jsonb_build_object('address', email_address_21.address, 'archived', entity_22.archived, 'created_at', entity_22.created_at, 'id', entity_22.id, 'type', entity_22.type) FROM agreego.email_address email_address_21 JOIN agreego.entity entity_22 ON entity_22.id = email_address_21.id WHERE NOT entity_22.archived AND relationship_19.target_id = entity_22.id), 'type', entity_20.type)), '[]'::jsonb) FROM agreego.contact contact_18 JOIN agreego.relationship relationship_19 ON relationship_19.id = contact_18.id JOIN agreego.entity entity_20 ON entity_20.id = relationship_19.id WHERE NOT entity_20.archived AND relationship_19.target_type = 'email_address' AND relationship_19.source_id = entity_3.id), 'first_name', person_1.first_name, 'id', entity_3.id, 'last_name', person_1.last_name, 'name', organization_2.name, 'phone_numbers', (SELECT COALESCE(jsonb_agg(jsonb_build_object('archived', entity_25.archived, 'created_at', entity_25.created_at, 'id', entity_25.id, 'is_primary', contact_23.is_primary, 'target', (SELECT jsonb_build_object('archived', entity_27.archived, 'created_at', entity_27.created_at, 'id', entity_27.id, 'number', phone_number_26.number, 'type', entity_27.type) FROM agreego.phone_number phone_number_26 JOIN agreego.entity entity_27 ON entity_27.id = phone_number_26.id WHERE NOT entity_27.archived AND relationship_24.target_id = entity_27.id), 'type', entity_25.type)), '[]'::jsonb) FROM agreego.contact contact_23 JOIN agreego.relationship relationship_24 ON relationship_24.id = contact_23.id JOIN agreego.entity entity_25 ON entity_25.id = relationship_24.id WHERE NOT entity_25.archived AND relationship_24.target_type = 'phone_number' AND relationship_24.source_id = entity_3.id), 'type', entity_3.type) FROM agreego.person person_1 JOIN agreego.organization organization_2 ON organization_2.id = person_1.id JOIN agreego.entity entity_3 ON entity_3.id = organization_2.id WHERE NOT entity_3.archived))) +TEST QUERY ERROR FOR 'Person select on full schema': Line mismatched at execution sequence 1. +Expected Pattern: (SELECT jsonb_strip_nulls((SELECT jsonb_build_object('addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_6.archived,'created_at',entity_6.created_at,'id',entity_6.id,'is_primary',contact_4.is_primary,'target',(SELECT jsonb_build_object('archived',entity_8.archived,'city',address_7.city,'created_at',entity_8.created_at,'id',entity_8.id,'type',entity_8.type)FROM agreego.address address_7 JOIN agreego.entity entity_8 ON entity_8.id=address_7.id WHERE NOT entity_8.archived AND relationship_5.target_id=entity_8.id),'type',entity_6.type)),'[]'::jsonb)FROM agreego.contact contact_4 JOIN agreego.relationship relationship_5 ON relationship_5.id=contact_4.id JOIN agreego.entity entity_6 ON entity_6.id=relationship_5.id WHERE NOT entity_6.archived AND relationship_5.target_type='address'AND relationship_5.source_id=entity_3.id),'age',person_1.age,'archived',entity_3.archived,'contacts',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_11.archived,'created_at',entity_11.created_at,'id',entity_11.id,'is_primary',contact_9.is_primary,'target',CASE WHEN entity_11.target_type='address'THEN((SELECT jsonb_build_object('archived',entity_13.archived,'city',address_12.city,'created_at',entity_13.created_at,'id',entity_13.id,'type',entity_13.type)FROM agreego.address address_12 JOIN agreego.entity entity_13 ON entity_13.id=address_12.id WHERE NOT entity_13.archived AND relationship_10.target_id=entity_13.id))WHEN entity_11.target_type='email_address'THEN((SELECT jsonb_build_object('address',email_address_14.address,'archived',entity_15.archived,'created_at',entity_15.created_at,'id',entity_15.id,'type',entity_15.type)FROM agreego.email_address email_address_14 JOIN agreego.entity entity_15 ON entity_15.id=email_address_14.id WHERE NOT entity_15.archived AND relationship_10.target_id=entity_15.id))WHEN entity_11.target_type='phone_number'THEN((SELECT jsonb_build_object('archived',entity_17.archived,'created_at',entity_17.created_at,'id',entity_17.id,'number',phone_number_16.number,'type',entity_17.type)FROM agreego.phone_number phone_number_16 JOIN agreego.entity entity_17 ON entity_17.id=phone_number_16.id WHERE NOT entity_17.archived AND relationship_10.target_id=entity_17.id))ELSE NULL END,'type',entity_11.type)),'[]'::jsonb)FROM agreego.contact contact_9 JOIN agreego.relationship relationship_10 ON relationship_10.id=contact_9.id JOIN agreego.entity entity_11 ON entity_11.id=relationship_10.id WHERE NOT entity_11.archived AND relationship_10.source_id=entity_3.id),'created_at',entity_3.created_at,'email_addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_20.archived,'created_at',entity_20.created_at,'id',entity_20.id,'is_primary',contact_18.is_primary,'target',(SELECT jsonb_build_object('address',email_address_21.address,'archived',entity_22.archived,'created_at',entity_22.created_at,'id',entity_22.id,'type',entity_22.type)FROM agreego.email_address email_address_21 JOIN agreego.entity entity_22 ON entity_22.id=email_address_21.id WHERE NOT entity_22.archived AND relationship_19.target_id=entity_22.id),'type',entity_20.type)),'[]'::jsonb)FROM agreego.contact contact_18 JOIN agreego.relationship relationship_19 ON relationship_19.id=contact_18.id JOIN agreego.entity entity_20 ON entity_20.id=relationship_19.id WHERE NOT entity_20.archived AND relationship_19.target_type='email_address'AND relationship_19.source_id=entity_3.id),'first_name',person_1.first_name,'id',entity_3.id,'last_name',person_1.last_name,'name',organization_2.name,'phone_numbers',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_25.archived,'created_at',entity_25.created_at,'id',entity_25.id,'is_primary',contact_23.is_primary,'target',(SELECT jsonb_build_object('archived',entity_27.archived,'created_at',entity_27.created_at,'id',entity_27.id,'number',phone_number_26.number,'type',entity_27.type)FROM agreego.phone_number phone_number_26 JOIN agreego.entity entity_27 ON entity_27.id=phone_number_26.id WHERE NOT entity_27.archived AND relationship_24.target_id=entity_27.id),'type',entity_25.type)),'[]'::jsonb)FROM agreego.contact contact_23 JOIN agreego.relationship relationship_24 ON relationship_24.id=contact_23.id JOIN agreego.entity entity_25 ON entity_25.id=relationship_24.id WHERE NOT entity_25.archived AND relationship_24.target_type='phone_number'AND relationship_24.source_id=entity_3.id),'type',entity_3.type)FROM agreego.person person_1 JOIN agreego.organization organization_2 ON organization_2.id=person_1.id JOIN agreego.entity entity_3 ON entity_3.id=organization_2.id WHERE NOT entity_3.archived))) +Actual SQL: (SELECT jsonb_strip_nulls((SELECT jsonb_build_object('addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_6.archived,'created_at',entity_6.created_at,'id',entity_6.id,'is_primary',contact_4.is_primary,'target',(SELECT jsonb_build_object('archived',entity_8.archived,'city',address_7.city,'created_at',entity_8.created_at,'id',entity_8.id,'type',entity_8.type)FROM agreego.address address_7 JOIN agreego.entity entity_8 ON entity_8.id=address_7.id WHERE NOT entity_8.archived AND relationship_5.target_id=entity_8.id),'type',entity_6.type)),'[]'::jsonb)FROM agreego.contact contact_4 JOIN agreego.relationship relationship_5 ON relationship_5.id=contact_4.id JOIN agreego.entity entity_6 ON entity_6.id=relationship_5.id WHERE NOT entity_6.archived AND relationship_5.target_type='address'AND relationship_5.source_id=entity_3.id),'age',person_1.age,'archived',entity_3.archived,'contacts',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_11.archived,'created_at',entity_11.created_at,'id',entity_11.id,'is_primary',contact_9.is_primary,'target',CASE WHEN relationship_10.target_type='address'THEN((SELECT jsonb_build_object('archived',entity_13.archived,'city',address_12.city,'created_at',entity_13.created_at,'id',entity_13.id,'type',entity_13.type)FROM agreego.address address_12 JOIN agreego.entity entity_13 ON entity_13.id=address_12.id WHERE NOT entity_13.archived AND relationship_10.target_id=entity_13.id))WHEN relationship_10.target_type='email_address'THEN((SELECT jsonb_build_object('address',email_address_14.address,'archived',entity_15.archived,'created_at',entity_15.created_at,'id',entity_15.id,'type',entity_15.type)FROM agreego.email_address email_address_14 JOIN agreego.entity entity_15 ON entity_15.id=email_address_14.id WHERE NOT entity_15.archived AND relationship_10.target_id=entity_15.id))WHEN relationship_10.target_type='phone_number'THEN((SELECT jsonb_build_object('archived',entity_17.archived,'created_at',entity_17.created_at,'id',entity_17.id,'number',phone_number_16.number,'type',entity_17.type)FROM agreego.phone_number phone_number_16 JOIN agreego.entity entity_17 ON entity_17.id=phone_number_16.id WHERE NOT entity_17.archived AND relationship_10.target_id=entity_17.id))ELSE NULL END,'type',entity_11.type)),'[]'::jsonb)FROM agreego.contact contact_9 JOIN agreego.relationship relationship_10 ON relationship_10.id=contact_9.id JOIN agreego.entity entity_11 ON entity_11.id=relationship_10.id WHERE NOT entity_11.archived AND relationship_10.source_id=entity_3.id),'created_at',entity_3.created_at,'email_addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_20.archived,'created_at',entity_20.created_at,'id',entity_20.id,'is_primary',contact_18.is_primary,'target',(SELECT jsonb_build_object('address',email_address_21.address,'archived',entity_22.archived,'created_at',entity_22.created_at,'id',entity_22.id,'type',entity_22.type)FROM agreego.email_address email_address_21 JOIN agreego.entity entity_22 ON entity_22.id=email_address_21.id WHERE NOT entity_22.archived AND relationship_19.target_id=entity_22.id),'type',entity_20.type)),'[]'::jsonb)FROM agreego.contact contact_18 JOIN agreego.relationship relationship_19 ON relationship_19.id=contact_18.id JOIN agreego.entity entity_20 ON entity_20.id=relationship_19.id WHERE NOT entity_20.archived AND relationship_19.target_type='email_address'AND relationship_19.source_id=entity_3.id),'first_name',person_1.first_name,'id',entity_3.id,'last_name',person_1.last_name,'name',organization_2.name,'phone_numbers',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_25.archived,'created_at',entity_25.created_at,'id',entity_25.id,'is_primary',contact_23.is_primary,'target',(SELECT jsonb_build_object('archived',entity_27.archived,'created_at',entity_27.created_at,'id',entity_27.id,'number',phone_number_26.number,'type',entity_27.type)FROM agreego.phone_number phone_number_26 JOIN agreego.entity entity_27 ON entity_27.id=phone_number_26.id WHERE NOT entity_27.archived AND relationship_24.target_id=entity_27.id),'type',entity_25.type)),'[]'::jsonb)FROM agreego.contact contact_23 JOIN agreego.relationship relationship_24 ON relationship_24.id=contact_23.id JOIN agreego.entity entity_25 ON entity_25.id=relationship_24.id WHERE NOT entity_25.archived AND relationship_24.target_type='phone_number'AND relationship_24.source_id=entity_3.id),'type',entity_3.type)FROM agreego.person person_1 JOIN agreego.organization organization_2 ON organization_2.id=person_1.id JOIN agreego.entity entity_3 ON entity_3.id=organization_2.id WHERE NOT entity_3.archived))) +Regex used: \(SELECT jsonb_strip_nulls\(\(SELECT jsonb_build_object\('addresses',\(SELECT COALESCE\(jsonb_agg\(jsonb_build_object\('archived',entity_6\.archived,'created_at',entity_6\.created_at,'id',entity_6\.id,'is_primary',contact_4\.is_primary,'target',\(SELECT jsonb_build_object\('archived',entity_8\.archived,'city',address_7\.city,'created_at',entity_8\.created_at,'id',entity_8\.id,'type',entity_8\.type\)FROM agreego\.address address_7 JOIN agreego\.entity entity_8 ON entity_8\.id=address_7\.id WHERE NOT entity_8\.archived AND relationship_5\.target_id=entity_8\.id\),'type',entity_6\.type\)\),'\[\]'::jsonb\)FROM agreego\.contact contact_4 JOIN agreego\.relationship relationship_5 ON relationship_5\.id=contact_4\.id JOIN agreego\.entity entity_6 ON entity_6\.id=relationship_5\.id WHERE NOT entity_6\.archived AND relationship_5\.target_type='address'AND relationship_5\.source_id=entity_3\.id\),'age',person_1\.age,'archived',entity_3\.archived,'contacts',\(SELECT COALESCE\(jsonb_agg\(jsonb_build_object\('archived',entity_11\.archived,'created_at',entity_11\.created_at,'id',entity_11\.id,'is_primary',contact_9\.is_primary,'target',CASE WHEN entity_11\.target_type='address'THEN\(\(SELECT jsonb_build_object\('archived',entity_13\.archived,'city',address_12\.city,'created_at',entity_13\.created_at,'id',entity_13\.id,'type',entity_13\.type\)FROM agreego\.address address_12 JOIN agreego\.entity entity_13 ON entity_13\.id=address_12\.id WHERE NOT entity_13\.archived AND relationship_10\.target_id=entity_13\.id\)\)WHEN entity_11\.target_type='email_address'THEN\(\(SELECT jsonb_build_object\('address',email_address_14\.address,'archived',entity_15\.archived,'created_at',entity_15\.created_at,'id',entity_15\.id,'type',entity_15\.type\)FROM agreego\.email_address email_address_14 JOIN agreego\.entity entity_15 ON entity_15\.id=email_address_14\.id WHERE NOT entity_15\.archived AND relationship_10\.target_id=entity_15\.id\)\)WHEN entity_11\.target_type='phone_number'THEN\(\(SELECT jsonb_build_object\('archived',entity_17\.archived,'created_at',entity_17\.created_at,'id',entity_17\.id,'number',phone_number_16\.number,'type',entity_17\.type\)FROM agreego\.phone_number phone_number_16 JOIN agreego\.entity entity_17 ON entity_17\.id=phone_number_16\.id WHERE NOT entity_17\.archived AND relationship_10\.target_id=entity_17\.id\)\)ELSE NULL END,'type',entity_11\.type\)\),'\[\]'::jsonb\)FROM agreego\.contact contact_9 JOIN agreego\.relationship relationship_10 ON relationship_10\.id=contact_9\.id JOIN agreego\.entity entity_11 ON entity_11\.id=relationship_10\.id WHERE NOT entity_11\.archived AND relationship_10\.source_id=entity_3\.id\),'created_at',entity_3\.created_at,'email_addresses',\(SELECT COALESCE\(jsonb_agg\(jsonb_build_object\('archived',entity_20\.archived,'created_at',entity_20\.created_at,'id',entity_20\.id,'is_primary',contact_18\.is_primary,'target',\(SELECT jsonb_build_object\('address',email_address_21\.address,'archived',entity_22\.archived,'created_at',entity_22\.created_at,'id',entity_22\.id,'type',entity_22\.type\)FROM agreego\.email_address email_address_21 JOIN agreego\.entity entity_22 ON entity_22\.id=email_address_21\.id WHERE NOT entity_22\.archived AND relationship_19\.target_id=entity_22\.id\),'type',entity_20\.type\)\),'\[\]'::jsonb\)FROM agreego\.contact contact_18 JOIN agreego\.relationship relationship_19 ON relationship_19\.id=contact_18\.id JOIN agreego\.entity entity_20 ON entity_20\.id=relationship_19\.id WHERE NOT entity_20\.archived AND relationship_19\.target_type='email_address'AND relationship_19\.source_id=entity_3\.id\),'first_name',person_1\.first_name,'id',entity_3\.id,'last_name',person_1\.last_name,'name',organization_2\.name,'phone_numbers',\(SELECT COALESCE\(jsonb_agg\(jsonb_build_object\('archived',entity_25\.archived,'created_at',entity_25\.created_at,'id',entity_25\.id,'is_primary',contact_23\.is_primary,'target',\(SELECT jsonb_build_object\('archived',entity_27\.archived,'created_at',entity_27\.created_at,'id',entity_27\.id,'number',phone_number_26\.number,'type',entity_27\.type\)FROM agreego\.phone_number phone_number_26 JOIN agreego\.entity entity_27 ON entity_27\.id=phone_number_26\.id WHERE NOT entity_27\.archived AND relationship_24\.target_id=entity_27\.id\),'type',entity_25\.type\)\),'\[\]'::jsonb\)FROM agreego\.contact contact_23 JOIN agreego\.relationship relationship_24 ON relationship_24\.id=contact_23\.id JOIN agreego\.entity entity_25 ON entity_25\.id=relationship_24\.id WHERE NOT entity_25\.archived AND relationship_24\.target_type='phone_number'AND relationship_24\.source_id=entity_3\.id\),'type',entity_3\.type\)FROM agreego\.person person_1 JOIN agreego\.organization organization_2 ON organization_2\.id=person_1\.id JOIN agreego\.entity entity_3 ON entity_3\.id=organization_2\.id WHERE NOT entity_3\.archived\)\)\) +Variables Mapped: {} + +thread 'tests::test_queryer_0_3' (124127284) panicked at src/tests/fixtures.rs:1433:54: +called `Result::unwrap()` on an `Err` value: "[Queryer Execution] Query Test 'Person select on full schema' failed. Error: Line mismatched at execution sequence 1.\nExpected Pattern: (SELECT jsonb_strip_nulls((SELECT jsonb_build_object('addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_6.archived,'created_at',entity_6.created_at,'id',entity_6.id,'is_primary',contact_4.is_primary,'target',(SELECT jsonb_build_object('archived',entity_8.archived,'city',address_7.city,'created_at',entity_8.created_at,'id',entity_8.id,'type',entity_8.type)FROM agreego.address address_7 JOIN agreego.entity entity_8 ON entity_8.id=address_7.id WHERE NOT entity_8.archived AND relationship_5.target_id=entity_8.id),'type',entity_6.type)),'[]'::jsonb)FROM agreego.contact contact_4 JOIN agreego.relationship relationship_5 ON relationship_5.id=contact_4.id JOIN agreego.entity entity_6 ON entity_6.id=relationship_5.id WHERE NOT entity_6.archived AND relationship_5.target_type='address'AND relationship_5.source_id=entity_3.id),'age',person_1.age,'archived',entity_3.archived,'contacts',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_11.archived,'created_at',entity_11.created_at,'id',entity_11.id,'is_primary',contact_9.is_primary,'target',CASE WHEN entity_11.target_type='address'THEN((SELECT jsonb_build_object('archived',entity_13.archived,'city',address_12.city,'created_at',entity_13.created_at,'id',entity_13.id,'type',entity_13.type)FROM agreego.address address_12 JOIN agreego.entity entity_13 ON entity_13.id=address_12.id WHERE NOT entity_13.archived AND relationship_10.target_id=entity_13.id))WHEN entity_11.target_type='email_address'THEN((SELECT jsonb_build_object('address',email_address_14.address,'archived',entity_15.archived,'created_at',entity_15.created_at,'id',entity_15.id,'type',entity_15.type)FROM agreego.email_address email_address_14 JOIN agreego.entity entity_15 ON entity_15.id=email_address_14.id WHERE NOT entity_15.archived AND relationship_10.target_id=entity_15.id))WHEN entity_11.target_type='phone_number'THEN((SELECT jsonb_build_object('archived',entity_17.archived,'created_at',entity_17.created_at,'id',entity_17.id,'number',phone_number_16.number,'type',entity_17.type)FROM agreego.phone_number phone_number_16 JOIN agreego.entity entity_17 ON entity_17.id=phone_number_16.id WHERE NOT entity_17.archived AND relationship_10.target_id=entity_17.id))ELSE NULL END,'type',entity_11.type)),'[]'::jsonb)FROM agreego.contact contact_9 JOIN agreego.relationship relationship_10 ON relationship_10.id=contact_9.id JOIN agreego.entity entity_11 ON entity_11.id=relationship_10.id WHERE NOT entity_11.archived AND relationship_10.source_id=entity_3.id),'created_at',entity_3.created_at,'email_addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_20.archived,'created_at',entity_20.created_at,'id',entity_20.id,'is_primary',contact_18.is_primary,'target',(SELECT jsonb_build_object('address',email_address_21.address,'archived',entity_22.archived,'created_at',entity_22.created_at,'id',entity_22.id,'type',entity_22.type)FROM agreego.email_address email_address_21 JOIN agreego.entity entity_22 ON entity_22.id=email_address_21.id WHERE NOT entity_22.archived AND relationship_19.target_id=entity_22.id),'type',entity_20.type)),'[]'::jsonb)FROM agreego.contact contact_18 JOIN agreego.relationship relationship_19 ON relationship_19.id=contact_18.id JOIN agreego.entity entity_20 ON entity_20.id=relationship_19.id WHERE NOT entity_20.archived AND relationship_19.target_type='email_address'AND relationship_19.source_id=entity_3.id),'first_name',person_1.first_name,'id',entity_3.id,'last_name',person_1.last_name,'name',organization_2.name,'phone_numbers',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_25.archived,'created_at',entity_25.created_at,'id',entity_25.id,'is_primary',contact_23.is_primary,'target',(SELECT jsonb_build_object('archived',entity_27.archived,'created_at',entity_27.created_at,'id',entity_27.id,'number',phone_number_26.number,'type',entity_27.type)FROM agreego.phone_number phone_number_26 JOIN agreego.entity entity_27 ON entity_27.id=phone_number_26.id WHERE NOT entity_27.archived AND relationship_24.target_id=entity_27.id),'type',entity_25.type)),'[]'::jsonb)FROM agreego.contact contact_23 JOIN agreego.relationship relationship_24 ON relationship_24.id=contact_23.id JOIN agreego.entity entity_25 ON entity_25.id=relationship_24.id WHERE NOT entity_25.archived AND relationship_24.target_type='phone_number'AND relationship_24.source_id=entity_3.id),'type',entity_3.type)FROM agreego.person person_1 JOIN agreego.organization organization_2 ON organization_2.id=person_1.id JOIN agreego.entity entity_3 ON entity_3.id=organization_2.id WHERE NOT entity_3.archived)))\nActual SQL: (SELECT jsonb_strip_nulls((SELECT jsonb_build_object('addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_6.archived,'created_at',entity_6.created_at,'id',entity_6.id,'is_primary',contact_4.is_primary,'target',(SELECT jsonb_build_object('archived',entity_8.archived,'city',address_7.city,'created_at',entity_8.created_at,'id',entity_8.id,'type',entity_8.type)FROM agreego.address address_7 JOIN agreego.entity entity_8 ON entity_8.id=address_7.id WHERE NOT entity_8.archived AND relationship_5.target_id=entity_8.id),'type',entity_6.type)),'[]'::jsonb)FROM agreego.contact contact_4 JOIN agreego.relationship relationship_5 ON relationship_5.id=contact_4.id JOIN agreego.entity entity_6 ON entity_6.id=relationship_5.id WHERE NOT entity_6.archived AND relationship_5.target_type='address'AND relationship_5.source_id=entity_3.id),'age',person_1.age,'archived',entity_3.archived,'contacts',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_11.archived,'created_at',entity_11.created_at,'id',entity_11.id,'is_primary',contact_9.is_primary,'target',CASE WHEN relationship_10.target_type='address'THEN((SELECT jsonb_build_object('archived',entity_13.archived,'city',address_12.city,'created_at',entity_13.created_at,'id',entity_13.id,'type',entity_13.type)FROM agreego.address address_12 JOIN agreego.entity entity_13 ON entity_13.id=address_12.id WHERE NOT entity_13.archived AND relationship_10.target_id=entity_13.id))WHEN relationship_10.target_type='email_address'THEN((SELECT jsonb_build_object('address',email_address_14.address,'archived',entity_15.archived,'created_at',entity_15.created_at,'id',entity_15.id,'type',entity_15.type)FROM agreego.email_address email_address_14 JOIN agreego.entity entity_15 ON entity_15.id=email_address_14.id WHERE NOT entity_15.archived AND relationship_10.target_id=entity_15.id))WHEN relationship_10.target_type='phone_number'THEN((SELECT jsonb_build_object('archived',entity_17.archived,'created_at',entity_17.created_at,'id',entity_17.id,'number',phone_number_16.number,'type',entity_17.type)FROM agreego.phone_number phone_number_16 JOIN agreego.entity entity_17 ON entity_17.id=phone_number_16.id WHERE NOT entity_17.archived AND relationship_10.target_id=entity_17.id))ELSE NULL END,'type',entity_11.type)),'[]'::jsonb)FROM agreego.contact contact_9 JOIN agreego.relationship relationship_10 ON relationship_10.id=contact_9.id JOIN agreego.entity entity_11 ON entity_11.id=relationship_10.id WHERE NOT entity_11.archived AND relationship_10.source_id=entity_3.id),'created_at',entity_3.created_at,'email_addresses',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_20.archived,'created_at',entity_20.created_at,'id',entity_20.id,'is_primary',contact_18.is_primary,'target',(SELECT jsonb_build_object('address',email_address_21.address,'archived',entity_22.archived,'created_at',entity_22.created_at,'id',entity_22.id,'type',entity_22.type)FROM agreego.email_address email_address_21 JOIN agreego.entity entity_22 ON entity_22.id=email_address_21.id WHERE NOT entity_22.archived AND relationship_19.target_id=entity_22.id),'type',entity_20.type)),'[]'::jsonb)FROM agreego.contact contact_18 JOIN agreego.relationship relationship_19 ON relationship_19.id=contact_18.id JOIN agreego.entity entity_20 ON entity_20.id=relationship_19.id WHERE NOT entity_20.archived AND relationship_19.target_type='email_address'AND relationship_19.source_id=entity_3.id),'first_name',person_1.first_name,'id',entity_3.id,'last_name',person_1.last_name,'name',organization_2.name,'phone_numbers',(SELECT COALESCE(jsonb_agg(jsonb_build_object('archived',entity_25.archived,'created_at',entity_25.created_at,'id',entity_25.id,'is_primary',contact_23.is_primary,'target',(SELECT jsonb_build_object('archived',entity_27.archived,'created_at',entity_27.created_at,'id',entity_27.id,'number',phone_number_26.number,'type',entity_27.type)FROM agreego.phone_number phone_number_26 JOIN agreego.entity entity_27 ON entity_27.id=phone_number_26.id WHERE NOT entity_27.archived AND relationship_24.target_id=entity_27.id),'type',entity_25.type)),'[]'::jsonb)FROM agreego.contact contact_23 JOIN agreego.relationship relationship_24 ON relationship_24.id=contact_23.id JOIN agreego.entity entity_25 ON entity_25.id=relationship_24.id WHERE NOT entity_25.archived AND relationship_24.target_type='phone_number'AND relationship_24.source_id=entity_3.id),'type',entity_3.type)FROM agreego.person person_1 JOIN agreego.organization organization_2 ON organization_2.id=person_1.id JOIN agreego.entity entity_3 ON entity_3.id=organization_2.id WHERE NOT entity_3.archived)))\nRegex used: \\(SELECT jsonb_strip_nulls\\(\\(SELECT jsonb_build_object\\('addresses',\\(SELECT COALESCE\\(jsonb_agg\\(jsonb_build_object\\('archived',entity_6\\.archived,'created_at',entity_6\\.created_at,'id',entity_6\\.id,'is_primary',contact_4\\.is_primary,'target',\\(SELECT jsonb_build_object\\('archived',entity_8\\.archived,'city',address_7\\.city,'created_at',entity_8\\.created_at,'id',entity_8\\.id,'type',entity_8\\.type\\)FROM agreego\\.address address_7 JOIN agreego\\.entity entity_8 ON entity_8\\.id=address_7\\.id WHERE NOT entity_8\\.archived AND relationship_5\\.target_id=entity_8\\.id\\),'type',entity_6\\.type\\)\\),'\\[\\]'::jsonb\\)FROM agreego\\.contact contact_4 JOIN agreego\\.relationship relationship_5 ON relationship_5\\.id=contact_4\\.id JOIN agreego\\.entity entity_6 ON entity_6\\.id=relationship_5\\.id WHERE NOT entity_6\\.archived AND relationship_5\\.target_type='address'AND relationship_5\\.source_id=entity_3\\.id\\),'age',person_1\\.age,'archived',entity_3\\.archived,'contacts',\\(SELECT COALESCE\\(jsonb_agg\\(jsonb_build_object\\('archived',entity_11\\.archived,'created_at',entity_11\\.created_at,'id',entity_11\\.id,'is_primary',contact_9\\.is_primary,'target',CASE WHEN entity_11\\.target_type='address'THEN\\(\\(SELECT jsonb_build_object\\('archived',entity_13\\.archived,'city',address_12\\.city,'created_at',entity_13\\.created_at,'id',entity_13\\.id,'type',entity_13\\.type\\)FROM agreego\\.address address_12 JOIN agreego\\.entity entity_13 ON entity_13\\.id=address_12\\.id WHERE NOT entity_13\\.archived AND relationship_10\\.target_id=entity_13\\.id\\)\\)WHEN entity_11\\.target_type='email_address'THEN\\(\\(SELECT jsonb_build_object\\('address',email_address_14\\.address,'archived',entity_15\\.archived,'created_at',entity_15\\.created_at,'id',entity_15\\.id,'type',entity_15\\.type\\)FROM agreego\\.email_address email_address_14 JOIN agreego\\.entity entity_15 ON entity_15\\.id=email_address_14\\.id WHERE NOT entity_15\\.archived AND relationship_10\\.target_id=entity_15\\.id\\)\\)WHEN entity_11\\.target_type='phone_number'THEN\\(\\(SELECT jsonb_build_object\\('archived',entity_17\\.archived,'created_at',entity_17\\.created_at,'id',entity_17\\.id,'number',phone_number_16\\.number,'type',entity_17\\.type\\)FROM agreego\\.phone_number phone_number_16 JOIN agreego\\.entity entity_17 ON entity_17\\.id=phone_number_16\\.id WHERE NOT entity_17\\.archived AND relationship_10\\.target_id=entity_17\\.id\\)\\)ELSE NULL END,'type',entity_11\\.type\\)\\),'\\[\\]'::jsonb\\)FROM agreego\\.contact contact_9 JOIN agreego\\.relationship relationship_10 ON relationship_10\\.id=contact_9\\.id JOIN agreego\\.entity entity_11 ON entity_11\\.id=relationship_10\\.id WHERE NOT entity_11\\.archived AND relationship_10\\.source_id=entity_3\\.id\\),'created_at',entity_3\\.created_at,'email_addresses',\\(SELECT COALESCE\\(jsonb_agg\\(jsonb_build_object\\('archived',entity_20\\.archived,'created_at',entity_20\\.created_at,'id',entity_20\\.id,'is_primary',contact_18\\.is_primary,'target',\\(SELECT jsonb_build_object\\('address',email_address_21\\.address,'archived',entity_22\\.archived,'created_at',entity_22\\.created_at,'id',entity_22\\.id,'type',entity_22\\.type\\)FROM agreego\\.email_address email_address_21 JOIN agreego\\.entity entity_22 ON entity_22\\.id=email_address_21\\.id WHERE NOT entity_22\\.archived AND relationship_19\\.target_id=entity_22\\.id\\),'type',entity_20\\.type\\)\\),'\\[\\]'::jsonb\\)FROM agreego\\.contact contact_18 JOIN agreego\\.relationship relationship_19 ON relationship_19\\.id=contact_18\\.id JOIN agreego\\.entity entity_20 ON entity_20\\.id=relationship_19\\.id WHERE NOT entity_20\\.archived AND relationship_19\\.target_type='email_address'AND relationship_19\\.source_id=entity_3\\.id\\),'first_name',person_1\\.first_name,'id',entity_3\\.id,'last_name',person_1\\.last_name,'name',organization_2\\.name,'phone_numbers',\\(SELECT COALESCE\\(jsonb_agg\\(jsonb_build_object\\('archived',entity_25\\.archived,'created_at',entity_25\\.created_at,'id',entity_25\\.id,'is_primary',contact_23\\.is_primary,'target',\\(SELECT jsonb_build_object\\('archived',entity_27\\.archived,'created_at',entity_27\\.created_at,'id',entity_27\\.id,'number',phone_number_26\\.number,'type',entity_27\\.type\\)FROM agreego\\.phone_number phone_number_26 JOIN agreego\\.entity entity_27 ON entity_27\\.id=phone_number_26\\.id WHERE NOT entity_27\\.archived AND relationship_24\\.target_id=entity_27\\.id\\),'type',entity_25\\.type\\)\\),'\\[\\]'::jsonb\\)FROM agreego\\.contact contact_23 JOIN agreego\\.relationship relationship_24 ON relationship_24\\.id=contact_23\\.id JOIN agreego\\.entity entity_25 ON entity_25\\.id=relationship_24\\.id WHERE NOT entity_25\\.archived AND relationship_24\\.target_type='phone_number'AND relationship_24\\.source_id=entity_3\\.id\\),'type',entity_3\\.type\\)FROM agreego\\.person person_1 JOIN agreego\\.organization organization_2 ON organization_2\\.id=person_1\\.id JOIN agreego\\.entity entity_3 ON entity_3\\.id=organization_2\\.id WHERE NOT entity_3\\.archived\\)\\)\\)\nVariables Mapped: {}" +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + + +failures: + tests::test_queryer_0_3 + +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 1362 filtered out; finished in 0.01s + +error: test failed, to rerun pass `--lib`