When config.snake_case_aliases: true, a response column whose snake alias differs
from the wire property name gets the correct snake column NAME but a null VALUE - the
DRM/projection extracts from the response item by the snake name while the data is
still keyed by the wire name. Single-word columns (snake == wire) are unaffected,
which is why it hides in simple cases.
Repro (stackql stackql_native_test mock, against alpha08)
Provider config has snake_case_aliases: true. The casing echo returns
{"VpcId": "...", "echoed_query": "..."}.
select vpc_id, echoed_query from stackql_native_test.casing.echo where VpcId = 'abc123';
-> | vpc_id | echoed_query |
| null | VpcId=abc123 | # vpc_id should be 'abc123'; echoed_query (single word) is fine
XML path, same gap (cidrBlock -> cidr_block):
select size, cidr_block from stackql_native_test.xml_ec2.volumes;
-> size projects (single word), cidr_block is null though the wire XML carries it.
Expected
A snake-aliased column should project the VALUE from its retained wire property name.
any-sdk getPropertiesColumns already keeps the wire name on the column's nested schema;
either emit the response data snake-keyed when the provider opts in, or have the
column carry the wire key so the consumer extracts by it.
Impact
Any real provider relying on snake_case_aliases (e.g. entra_id / AWS-native) returns
null for every multi-word field. Blocks meaningful value assertions in the stackql
xml_walker / casing robot suites.
When
config.snake_case_aliases: true, a response column whose snake alias differsfrom the wire property name gets the correct snake column NAME but a null VALUE - the
DRM/projection extracts from the response item by the snake name while the data is
still keyed by the wire name. Single-word columns (snake == wire) are unaffected,
which is why it hides in simple cases.
Repro (stackql
stackql_native_testmock, against alpha08)Provider config has
snake_case_aliases: true. The casing echo returns{"VpcId": "...", "echoed_query": "..."}.XML path, same gap (cidrBlock -> cidr_block):
Expected
A snake-aliased column should project the VALUE from its retained wire property name.
any-sdk getPropertiesColumns already keeps the wire name on the column's nested schema;
either emit the response data snake-keyed when the provider opts in, or have the
column carry the wire key so the consumer extracts by it.
Impact
Any real provider relying on snake_case_aliases (e.g. entra_id / AWS-native) returns
null for every multi-word field. Blocks meaningful value assertions in the stackql
xml_walker / casing robot suites.