Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 70a27b430d | |||
| e078b8a74b | |||
| c2c0e62c2d | |||
| ebb97b3509 | |||
| 5d18847f32 | |||
| 4a33e29628 | |||
| d8fc286e94 | |||
| 507dc6d780 |
@ -39,10 +39,6 @@ crate-type = ["cdylib", "lib"]
|
||||
name = "pgrx_embed_jspg"
|
||||
path = "src/bin/pgrx_embed.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "ast_explore"
|
||||
path = "src/bin/ast_explore.rs"
|
||||
|
||||
[features]
|
||||
default = ["pg18"]
|
||||
pg18 = ["pgrx/pg18", "pgrx-tests/pg18" ]
|
||||
|
||||
@ -905,7 +905,7 @@
|
||||
" 'type', t1_obj_t2.type)",
|
||||
"FROM agreego.person t1_obj_t1",
|
||||
"JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
|
||||
"WHERE NOT t1_obj_t1.archived)"
|
||||
"WHERE NOT t1_obj_t2.archived)"
|
||||
]
|
||||
]
|
||||
}
|
||||
@ -938,7 +938,7 @@
|
||||
" FROM agreego.address t1_obj_t2_addresses_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_addresses_t3_target_t2 ON t1_obj_t2_addresses_t3_target_t2.id = t1_obj_t2_addresses_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_addresses_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_addresses_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_addresses_t3_target_t1.id = t1_obj_t2_addresses_t3.target_id",
|
||||
" ),",
|
||||
" 'type', t1_obj_t2_addresses_t3.type",
|
||||
@ -947,7 +947,7 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_addresses_t2 ON t1_obj_t2_addresses_t2.id = t1_obj_t2_addresses_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_addresses_t3 ON t1_obj_t2_addresses_t3.id = t1_obj_t2_addresses_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_addresses_t1.archived",
|
||||
" NOT t1_obj_t2_addresses_t3.archived",
|
||||
" AND t1_obj_t2_addresses_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'age', t1_obj_t1.age,",
|
||||
" 'archived', t1_obj_t2.archived,",
|
||||
@ -971,7 +971,7 @@
|
||||
" FROM agreego.phone_number t1_obj_t2_contacts_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3_target_t2 ON t1_obj_t2_contacts_t3_target_t2.id = t1_obj_t2_contacts_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_contacts_t3_target_t1.id = t1_obj_t2_contacts_t3.target_id",
|
||||
" ))",
|
||||
" WHEN t1_obj_t2_contacts_t3.target_type = 'email_address' THEN",
|
||||
@ -986,7 +986,7 @@
|
||||
" FROM agreego.email_address t1_obj_t2_contacts_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3_target_t2 ON t1_obj_t2_contacts_t3_target_t2.id = t1_obj_t2_contacts_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_contacts_t3_target_t1.id = t1_obj_t2_contacts_t3.target_id",
|
||||
" ))",
|
||||
" WHEN t1_obj_t2_contacts_t3.target_type = 'address' THEN",
|
||||
@ -1001,7 +1001,7 @@
|
||||
" FROM agreego.address t1_obj_t2_contacts_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3_target_t2 ON t1_obj_t2_contacts_t3_target_t2.id = t1_obj_t2_contacts_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_contacts_t3_target_t1.id = t1_obj_t2_contacts_t3.target_id",
|
||||
" ))",
|
||||
" ELSE NULL",
|
||||
@ -1012,7 +1012,7 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_contacts_t2 ON t1_obj_t2_contacts_t2.id = t1_obj_t2_contacts_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3 ON t1_obj_t2_contacts_t3.id = t1_obj_t2_contacts_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3.archived",
|
||||
" AND t1_obj_t2_contacts_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'created_at', t1_obj_t2.created_at,",
|
||||
" 'email_addresses',",
|
||||
@ -1034,7 +1034,7 @@
|
||||
" FROM agreego.email_address t1_obj_t2_email_addresses_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_email_addresses_t3_target_t2 ON t1_obj_t2_email_addresses_t3_target_t2.id = t1_obj_t2_email_addresses_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_email_addresses_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_email_addresses_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_email_addresses_t3_target_t1.id = t1_obj_t2_email_addresses_t3.target_id",
|
||||
" ),",
|
||||
" 'type', t1_obj_t2_email_addresses_t3.type",
|
||||
@ -1043,7 +1043,7 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_email_addresses_t2 ON t1_obj_t2_email_addresses_t2.id = t1_obj_t2_email_addresses_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_email_addresses_t3 ON t1_obj_t2_email_addresses_t3.id = t1_obj_t2_email_addresses_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_email_addresses_t1.archived",
|
||||
" NOT t1_obj_t2_email_addresses_t3.archived",
|
||||
" AND t1_obj_t2_email_addresses_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'first_name', t1_obj_t1.first_name,",
|
||||
" 'id', t1_obj_t2.id,",
|
||||
@ -1068,7 +1068,7 @@
|
||||
" FROM agreego.phone_number t1_obj_t2_phone_numbers_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_phone_numbers_t3_target_t2 ON t1_obj_t2_phone_numbers_t3_target_t2.id = t1_obj_t2_phone_numbers_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_phone_numbers_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_phone_numbers_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_phone_numbers_t3_target_t1.id = t1_obj_t2_phone_numbers_t3.target_id",
|
||||
" ),",
|
||||
" 'type', t1_obj_t2_phone_numbers_t3.type",
|
||||
@ -1077,13 +1077,13 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_phone_numbers_t2 ON t1_obj_t2_phone_numbers_t2.id = t1_obj_t2_phone_numbers_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_phone_numbers_t3 ON t1_obj_t2_phone_numbers_t3.id = t1_obj_t2_phone_numbers_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_phone_numbers_t1.archived",
|
||||
" NOT t1_obj_t2_phone_numbers_t3.archived",
|
||||
" AND t1_obj_t2_phone_numbers_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'type', t1_obj_t2.type",
|
||||
")",
|
||||
"FROM agreego.person t1_obj_t1",
|
||||
"JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
|
||||
"WHERE NOT t1_obj_t1.archived)"
|
||||
"WHERE NOT t1_obj_t2.archived)"
|
||||
]
|
||||
]
|
||||
}
|
||||
@ -1181,7 +1181,7 @@
|
||||
" FROM agreego.address t1_obj_t2_addresses_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_addresses_t3_target_t2 ON t1_obj_t2_addresses_t3_target_t2.id = t1_obj_t2_addresses_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_addresses_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_addresses_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_addresses_t3_target_t1.id = t1_obj_t2_addresses_t3.target_id",
|
||||
" ),",
|
||||
" 'type', t1_obj_t2_addresses_t3.type",
|
||||
@ -1190,7 +1190,7 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_addresses_t2 ON t1_obj_t2_addresses_t2.id = t1_obj_t2_addresses_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_addresses_t3 ON t1_obj_t2_addresses_t3.id = t1_obj_t2_addresses_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_addresses_t1.archived",
|
||||
" NOT t1_obj_t2_addresses_t3.archived",
|
||||
" AND t1_obj_t2_addresses_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'age', t1_obj_t1.age,",
|
||||
" 'archived', t1_obj_t2.archived,",
|
||||
@ -1214,7 +1214,7 @@
|
||||
" FROM agreego.phone_number t1_obj_t2_contacts_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3_target_t2 ON t1_obj_t2_contacts_t3_target_t2.id = t1_obj_t2_contacts_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_contacts_t3_target_t1.id = t1_obj_t2_contacts_t3.target_id",
|
||||
" ))",
|
||||
" WHEN t1_obj_t2_contacts_t3.target_type = 'email_address' THEN",
|
||||
@ -1229,7 +1229,7 @@
|
||||
" FROM agreego.email_address t1_obj_t2_contacts_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3_target_t2 ON t1_obj_t2_contacts_t3_target_t2.id = t1_obj_t2_contacts_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_contacts_t3_target_t1.id = t1_obj_t2_contacts_t3.target_id",
|
||||
" ))",
|
||||
" WHEN t1_obj_t2_contacts_t3.target_type = 'address' THEN",
|
||||
@ -1244,7 +1244,7 @@
|
||||
" FROM agreego.address t1_obj_t2_contacts_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3_target_t2 ON t1_obj_t2_contacts_t3_target_t2.id = t1_obj_t2_contacts_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_contacts_t3_target_t1.id = t1_obj_t2_contacts_t3.target_id",
|
||||
" ))",
|
||||
" ELSE NULL",
|
||||
@ -1255,7 +1255,7 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_contacts_t2 ON t1_obj_t2_contacts_t2.id = t1_obj_t2_contacts_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_contacts_t3 ON t1_obj_t2_contacts_t3.id = t1_obj_t2_contacts_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_contacts_t1.archived",
|
||||
" NOT t1_obj_t2_contacts_t3.archived",
|
||||
" AND t1_obj_t2_contacts_t1.is_primary = ($11#>>'{}')::boolean",
|
||||
" AND t1_obj_t2_contacts_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'created_at', t1_obj_t2.created_at,",
|
||||
@ -1278,7 +1278,7 @@
|
||||
" FROM agreego.email_address t1_obj_t2_email_addresses_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_email_addresses_t3_target_t2 ON t1_obj_t2_email_addresses_t3_target_t2.id = t1_obj_t2_email_addresses_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_email_addresses_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_email_addresses_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_email_addresses_t3_target_t1.id = t1_obj_t2_email_addresses_t3.target_id",
|
||||
" ),",
|
||||
" 'type', t1_obj_t2_email_addresses_t3.type",
|
||||
@ -1287,7 +1287,7 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_email_addresses_t2 ON t1_obj_t2_email_addresses_t2.id = t1_obj_t2_email_addresses_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_email_addresses_t3 ON t1_obj_t2_email_addresses_t3.id = t1_obj_t2_email_addresses_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_email_addresses_t1.archived",
|
||||
" NOT t1_obj_t2_email_addresses_t3.archived",
|
||||
" AND t1_obj_t2_email_addresses_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'first_name', t1_obj_t1.first_name,",
|
||||
" 'id', t1_obj_t2.id,",
|
||||
@ -1312,7 +1312,7 @@
|
||||
" FROM agreego.phone_number t1_obj_t2_phone_numbers_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_phone_numbers_t3_target_t2 ON t1_obj_t2_phone_numbers_t3_target_t2.id = t1_obj_t2_phone_numbers_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_phone_numbers_t3_target_t1.archived",
|
||||
" NOT t1_obj_t2_phone_numbers_t3_target_t2.archived",
|
||||
" AND t1_obj_t2_phone_numbers_t3_target_t1.number ILIKE $32#>>'{}'",
|
||||
" AND t1_obj_t2_phone_numbers_t3_target_t1.id = t1_obj_t2_phone_numbers_t3.target_id",
|
||||
" ),",
|
||||
@ -1322,14 +1322,14 @@
|
||||
" JOIN agreego.relationship t1_obj_t2_phone_numbers_t2 ON t1_obj_t2_phone_numbers_t2.id = t1_obj_t2_phone_numbers_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t2_phone_numbers_t3 ON t1_obj_t2_phone_numbers_t3.id = t1_obj_t2_phone_numbers_t2.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_phone_numbers_t1.archived",
|
||||
" NOT t1_obj_t2_phone_numbers_t3.archived",
|
||||
" AND t1_obj_t2_phone_numbers_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'type', t1_obj_t2.type",
|
||||
")",
|
||||
"FROM agreego.person t1_obj_t1",
|
||||
"JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
|
||||
"WHERE",
|
||||
" NOT t1_obj_t1.archived",
|
||||
" NOT t1_obj_t2.archived",
|
||||
" AND t1_obj_t1.age = ($1#>>'{}')::numeric",
|
||||
" AND t1_obj_t1.age > ($2#>>'{}')::numeric",
|
||||
" AND t1_obj_t1.age >= ($3#>>'{}')::numeric",
|
||||
@ -1392,14 +1392,14 @@
|
||||
" FROM agreego.phone_number t1_obj_t3_target_t1",
|
||||
" JOIN agreego.entity t1_obj_t3_target_t2 ON t1_obj_t3_target_t2.id = t1_obj_t3_target_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t3_target_t1.archived",
|
||||
" NOT t1_obj_t3_target_t2.archived",
|
||||
" AND t1_obj_t3_target_t1.id = t1_obj_t3.target_id),",
|
||||
" 'type', t1_obj_t3.type",
|
||||
")",
|
||||
"FROM agreego.contact t1_obj_t1",
|
||||
"JOIN agreego.relationship t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
|
||||
"JOIN agreego.entity t1_obj_t3 ON t1_obj_t3.id = t1_obj_t2.id",
|
||||
"WHERE NOT t1_obj_t1.archived)"
|
||||
"WHERE NOT t1_obj_t3.archived)"
|
||||
]
|
||||
]
|
||||
}
|
||||
@ -1422,7 +1422,7 @@
|
||||
" 'type', t1_obj_t2.type)",
|
||||
"FROM agreego.phone_number t1_obj_t1",
|
||||
"JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
|
||||
"WHERE NOT t1_obj_t1.archived)"
|
||||
"WHERE NOT t1_obj_t2.archived)"
|
||||
]
|
||||
]
|
||||
}
|
||||
@ -1445,7 +1445,7 @@
|
||||
" 'type', t1_obj_t2.type)",
|
||||
"FROM agreego.email_address t1_obj_t1",
|
||||
"JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
|
||||
"WHERE NOT t1_obj_t1.archived)"
|
||||
"WHERE NOT t1_obj_t2.archived)"
|
||||
]
|
||||
]
|
||||
}
|
||||
@ -1475,7 +1475,7 @@
|
||||
" FROM agreego.person t1_obj_t2_customer_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_customer_t2 ON t1_obj_t2_customer_t2.id = t1_obj_t2_customer_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_customer_t1.archived",
|
||||
" NOT t1_obj_t2_customer_t2.archived",
|
||||
" AND t1_obj_t2_customer_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'customer_id', t1_obj_t1.customer_id,",
|
||||
" 'id', t1_obj_t2.id,",
|
||||
@ -1493,7 +1493,7 @@
|
||||
" FROM agreego.order_line t1_obj_t2_lines_t1",
|
||||
" JOIN agreego.entity t1_obj_t2_lines_t2 ON t1_obj_t2_lines_t2.id = t1_obj_t2_lines_t1.id",
|
||||
" WHERE",
|
||||
" NOT t1_obj_t2_lines_t1.archived",
|
||||
" NOT t1_obj_t2_lines_t2.archived",
|
||||
" AND t1_obj_t2_lines_t1.parent_id = t1_obj_t2.id),",
|
||||
" 'name', t1_obj_t2.name,",
|
||||
" 'total', t1_obj_t1.total,",
|
||||
@ -1501,7 +1501,7 @@
|
||||
")",
|
||||
"FROM agreego.order t1_obj_t1",
|
||||
"JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
|
||||
"WHERE NOT t1_obj_t1.archived)"
|
||||
"WHERE NOT t1_obj_t2.archived)"
|
||||
]
|
||||
]
|
||||
}
|
||||
@ -1525,7 +1525,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.address t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" WHEN t1_obj_t1.type = 'contact' THEN ((SELECT jsonb_build_object(",
|
||||
" 'archived', t1_obj_t1_obj_t3.archived,",
|
||||
" 'created_at', t1_obj_t1_obj_t3.created_at,",
|
||||
@ -1536,7 +1536,7 @@
|
||||
" FROM agreego.contact t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.relationship t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t3 ON t1_obj_t1_obj_t3.id = t1_obj_t1_obj_t2.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t3.archived))",
|
||||
" WHEN t1_obj_t1.type = 'email_address' THEN ((SELECT jsonb_build_object(",
|
||||
" 'address', t1_obj_t1_obj_t1.address,",
|
||||
" 'archived', t1_obj_t1_obj_t2.archived,",
|
||||
@ -1546,7 +1546,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.email_address t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" WHEN t1_obj_t1.type = 'entity' THEN ((SELECT jsonb_build_object(",
|
||||
" 'archived', t1_obj_t1_obj_t1.archived,",
|
||||
" 'created_at', t1_obj_t1_obj_t1.created_at,",
|
||||
@ -1565,7 +1565,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.order t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" WHEN t1_obj_t1.type = 'order_line' THEN ((SELECT jsonb_build_object(",
|
||||
" 'archived', t1_obj_t1_obj_t2.archived,",
|
||||
" 'created_at', t1_obj_t1_obj_t2.created_at,",
|
||||
@ -1577,7 +1577,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.order_line t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" WHEN t1_obj_t1.type = 'organization' THEN ((SELECT jsonb_build_object(",
|
||||
" 'archived', t1_obj_t1_obj_t2.archived,",
|
||||
" 'created_at', t1_obj_t1_obj_t2.created_at,",
|
||||
@ -1586,7 +1586,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.organization t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" WHEN t1_obj_t1.type = 'person' THEN ((SELECT jsonb_build_object(",
|
||||
" 'age', t1_obj_t1_obj_t1.age,",
|
||||
" 'archived', t1_obj_t1_obj_t2.archived,",
|
||||
@ -1598,7 +1598,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.person t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" WHEN t1_obj_t1.type = 'phone_number' THEN ((SELECT jsonb_build_object(",
|
||||
" 'archived', t1_obj_t1_obj_t2.archived,",
|
||||
" 'created_at', t1_obj_t1_obj_t2.created_at,",
|
||||
@ -1608,7 +1608,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.phone_number t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" WHEN t1_obj_t1.type = 'relationship' THEN ((SELECT jsonb_build_object(",
|
||||
" 'archived', t1_obj_t1_obj_t2.archived,",
|
||||
" 'created_at', t1_obj_t1_obj_t2.created_at,",
|
||||
@ -1617,7 +1617,7 @@
|
||||
" 'type', t1_obj_t1_obj_t2.type)",
|
||||
" FROM agreego.relationship t1_obj_t1_obj_t1",
|
||||
" JOIN agreego.entity t1_obj_t1_obj_t2 ON t1_obj_t1_obj_t2.id = t1_obj_t1_obj_t1.id",
|
||||
" WHERE NOT t1_obj_t1_obj_t1.archived))",
|
||||
" WHERE NOT t1_obj_t1_obj_t2.archived))",
|
||||
" ELSE NULL END)",
|
||||
"FROM agreego.entity t1_obj_t1",
|
||||
"WHERE NOT t1_obj_t1.archived)"
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
use sqlparser::dialect::PostgreSqlDialect;
|
||||
use sqlparser::parser::Parser;
|
||||
use std::env;
|
||||
|
||||
fn main() {
|
||||
let sql = "SELECT t1_obj_t1_addresses_t1_target_t2.archived, t1.id FROM person t1 JOIN address t1_obj_t1_addresses ON true";
|
||||
let dialect = PostgreSqlDialect {};
|
||||
|
||||
match Parser::parse_sql(&dialect, sql) {
|
||||
Ok(ast) => {
|
||||
println!("{:#?}", ast);
|
||||
}
|
||||
Err(e) => {
|
||||
println!("Error: {:?}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -24,20 +24,28 @@ impl DatabaseExecutor for SpiExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
Spi::connect(|client| {
|
||||
match client.select(sql, Some(args_with_oid.len() as i64), &args_with_oid) {
|
||||
Ok(tup_table) => {
|
||||
let mut results = Vec::new();
|
||||
for row in tup_table {
|
||||
if let Ok(Some(jsonb)) = row.get::<pgrx::JsonB>(1) {
|
||||
results.push(jsonb.0);
|
||||
pgrx::PgTryBuilder::new(|| {
|
||||
Spi::connect(|client| {
|
||||
pgrx::notice!("JSPG_SQL: {}", sql);
|
||||
match client.select(sql, Some(args_with_oid.len() as i64), &args_with_oid) {
|
||||
Ok(tup_table) => {
|
||||
let mut results = Vec::new();
|
||||
for row in tup_table {
|
||||
if let Ok(Some(jsonb)) = row.get::<pgrx::JsonB>(1) {
|
||||
results.push(jsonb.0);
|
||||
}
|
||||
}
|
||||
Ok(Value::Array(results))
|
||||
}
|
||||
Ok(Value::Array(results))
|
||||
Err(e) => Err(format!("SPI Query Fetch Failure: {}", e)),
|
||||
}
|
||||
Err(e) => Err(format!("SPI Query Fetch Failure: {}", e)),
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch_others(|cause| {
|
||||
pgrx::warning!("JSPG Caught Native Postgres Error: {:?}", cause);
|
||||
Err(format!("{:?}", cause))
|
||||
})
|
||||
.execute()
|
||||
}
|
||||
|
||||
fn execute(&self, sql: &str, args: Option<&[Value]>) -> Result<(), String> {
|
||||
@ -52,12 +60,20 @@ impl DatabaseExecutor for SpiExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
Spi::connect_mut(|client| {
|
||||
match client.update(sql, Some(args_with_oid.len() as i64), &args_with_oid) {
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => Err(format!("SPI Execution Failure: {}", e)),
|
||||
}
|
||||
pgrx::PgTryBuilder::new(|| {
|
||||
Spi::connect_mut(|client| {
|
||||
pgrx::notice!("JSPG_SQL: {}", sql);
|
||||
match client.update(sql, Some(args_with_oid.len() as i64), &args_with_oid) {
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => Err(format!("SPI Execution Failure: {}", e)),
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch_others(|cause| {
|
||||
pgrx::warning!("JSPG Caught Native Postgres Error: {:?}", cause);
|
||||
Err(format!("{:?}", cause))
|
||||
})
|
||||
.execute()
|
||||
}
|
||||
|
||||
fn auth_user_id(&self) -> Result<String, String> {
|
||||
|
||||
@ -67,6 +67,10 @@ pub struct Error {
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct ErrorDetails {
|
||||
pub path: String,
|
||||
// Extensions can be added here (package, cause, etc)
|
||||
// For now, validator only provides path
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub cause: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub context: Option<Vec<String>>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub schema: Option<String>,
|
||||
}
|
||||
|
||||
@ -31,6 +31,9 @@ fn jspg_failure() -> JsonB {
|
||||
message: "JSPG extension has not been initialized via jspg_setup".to_string(),
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: "".to_string(),
|
||||
cause: None,
|
||||
context: None,
|
||||
schema: None,
|
||||
},
|
||||
};
|
||||
let drop = crate::drop::Drop::with_errors(vec![error]);
|
||||
|
||||
@ -36,6 +36,9 @@ impl Merger {
|
||||
message: msg,
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: "".to_string(),
|
||||
cause: None,
|
||||
context: None,
|
||||
schema: None,
|
||||
},
|
||||
}]);
|
||||
}
|
||||
@ -49,6 +52,9 @@ impl Merger {
|
||||
message: format!("Executor Error in pre-ordered notify: {:?}", e),
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: "".to_string(),
|
||||
cause: None,
|
||||
context: None,
|
||||
schema: None,
|
||||
},
|
||||
}]);
|
||||
}
|
||||
|
||||
@ -457,8 +457,13 @@ impl SqlCompiler {
|
||||
.cloned()
|
||||
.unwrap_or_else(|| "err".to_string());
|
||||
|
||||
let entity_alias = table_aliases
|
||||
.get("entity")
|
||||
.cloned()
|
||||
.unwrap_or_else(|| base_alias.clone());
|
||||
|
||||
let mut where_clauses = Vec::new();
|
||||
where_clauses.push(format!("NOT {}.archived", base_alias));
|
||||
where_clauses.push(format!("NOT {}.archived", entity_alias));
|
||||
|
||||
for (i, filter_key) in filter_keys.iter().enumerate() {
|
||||
let mut parts = filter_key.split(':');
|
||||
|
||||
@ -32,9 +32,12 @@ impl Queryer {
|
||||
Err(msg) => {
|
||||
return crate::drop::Drop::with_errors(vec![crate::drop::Error {
|
||||
code: "FILTER_PARSE_FAILED".to_string(),
|
||||
message: msg,
|
||||
message: msg.clone(),
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: schema_id.to_string(),
|
||||
path: "".to_string(), // filters apply to the root query
|
||||
cause: Some(msg),
|
||||
context: filters.map(|f| vec![f.to_string()]),
|
||||
schema: Some(schema_id.to_string()),
|
||||
},
|
||||
}]);
|
||||
}
|
||||
@ -104,9 +107,12 @@ impl Queryer {
|
||||
}
|
||||
Err(e) => Err(crate::drop::Drop::with_errors(vec![crate::drop::Error {
|
||||
code: "QUERY_COMPILATION_FAILED".to_string(),
|
||||
message: e,
|
||||
message: e.clone(),
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: schema_id.to_string(),
|
||||
path: "".to_string(),
|
||||
cause: Some(e),
|
||||
context: None,
|
||||
schema: Some(schema_id.to_string()),
|
||||
},
|
||||
}])),
|
||||
}
|
||||
@ -130,14 +136,20 @@ impl Queryer {
|
||||
code: "QUERY_FAILED".to_string(),
|
||||
message: format!("Expected array from generic query, got: {:?}", other),
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: schema_id.to_string(),
|
||||
path: "".to_string(),
|
||||
cause: Some(format!("Expected array, got {}", other)),
|
||||
context: Some(vec![sql.to_string()]),
|
||||
schema: Some(schema_id.to_string()),
|
||||
},
|
||||
}]),
|
||||
Err(e) => crate::drop::Drop::with_errors(vec![crate::drop::Error {
|
||||
code: "QUERY_FAILED".to_string(),
|
||||
message: format!("SPI error in queryer: {}", e),
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: schema_id.to_string(),
|
||||
path: "".to_string(),
|
||||
cause: Some(format!("SPI error in queryer: {}", e)),
|
||||
context: Some(vec![sql.to_string()]),
|
||||
schema: Some(schema_id.to_string()),
|
||||
},
|
||||
}]),
|
||||
}
|
||||
|
||||
@ -67,7 +67,12 @@ impl Validator {
|
||||
.map(|e| crate::drop::Error {
|
||||
code: e.code,
|
||||
message: e.message,
|
||||
details: crate::drop::ErrorDetails { path: e.path },
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: e.path,
|
||||
cause: None,
|
||||
context: None,
|
||||
schema: None,
|
||||
},
|
||||
})
|
||||
.collect();
|
||||
crate::drop::Drop::with_errors(errors)
|
||||
@ -76,7 +81,12 @@ impl Validator {
|
||||
Err(e) => crate::drop::Drop::with_errors(vec![crate::drop::Error {
|
||||
code: e.code,
|
||||
message: e.message,
|
||||
details: crate::drop::ErrorDetails { path: e.path },
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: e.path,
|
||||
cause: None,
|
||||
context: None,
|
||||
schema: None,
|
||||
},
|
||||
}]),
|
||||
}
|
||||
} else {
|
||||
@ -84,7 +94,10 @@ impl Validator {
|
||||
code: "SCHEMA_NOT_FOUND".to_string(),
|
||||
message: format!("Schema {} not found", schema_id),
|
||||
details: crate::drop::ErrorDetails {
|
||||
path: "".to_string(),
|
||||
path: "/".to_string(),
|
||||
cause: None,
|
||||
context: None,
|
||||
schema: None,
|
||||
},
|
||||
}])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user