Cole-Greer opened a new pull request, #3456: URL: https://github.com/apache/tinkerpop/pull/3456
## Summary Completes the client-side GValue (named query-parameter) feature so it behaves consistently across all GLVs, adds parameterized feature-test coverage for the GLVs, and simplifies GValue name validation. ## Issues, gaps, and inconsistencies resolved - **GValue was incomplete/inconsistent across GLVs** — JavaScript had no GValue at all; Python/.NET/Go diverged on validation, duplicate detection, and string representation. - **Missing parameterized test coverage** — only Python ran the shared Gherkin corpus with parameters sent as GValue bindings; .NET, Go, and JS did not. - **JS feature tests passed vacuously** — the docker run pointed at a non-existent corpus path, so 0 scenarios actually ran. - **GLVs were stricter than Java** — they layered an identifier-pattern check on top of Java's rules; and the leading-_ reservation was obsolete (its motivating fallback was removed). - **Non-idiomatic driver APIs** — Go used a constructor with unexported fields/getters; ## Details - Aligned GValue validation/behavior across Python/.NET/Go; added the JS GValue; added a nested-GValue guard everywhere; added strongly-typed GValue<T> overloads to .NET for Java parity (interleaved beside their value-typed siblings). - Added a PARAMETERIZE Gherkin variant to .NET, Go, and JS. - Simplified name validation to match Java: only "no nested GValue" and (non-Java drivers) "non-null name" remain; removed the leading-_ reservation in Java and all GLVs. - Replaced Go's constructor with an idiomatic exported-field struct. .NET parameterize design: .NET is the only driver that parameterizes at the translator level (a second generated dotnet_parameterize translation set) rather than at runtime, because it's the only variant that is both statically typed and exposes strongly-typed GValue<T> overloads—so value-vs-GValue is a compile- time overload choice. The other GLVs wrap values at runtime and reuse one translation set. The trade-off is higher regeneration cost for .NET, inherent to the typed API. ## Limitations - Python's parameterized-V() integration test stays skipped under TINKERPOP-3126 (This is a grammar limitation/bug, not related to the GValue implementation). - Go does not fail fast on a nested GValue (deliberate trade-off for the struct API; surfaces downstream instead). - .NET multi-arg hasLabel mixing literal + variable args isn't parameterized (C# overload constraint; documented in code). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
