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]

Reply via email to