Skip to content

MLE-29888 Add cts expressions as allowable cts params#1943

Merged
rjdew-progress merged 1 commit into
developfrom
MLE-29888
Jun 25, 2026
Merged

MLE-29888 Add cts expressions as allowable cts params#1943
rjdew-progress merged 1 commit into
developfrom
MLE-29888

Conversation

@rjdew-progress

Copy link
Copy Markdown

In preparation for MarkLogic 12.1, allow for the use of cts queries in Optic bindings.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR prepares the Java Client API’s Optic plan execution/binding support for MarkLogic 12.1 by allowing cts:param() placeholders to be bound to CTS query expressions (so Optic bindings can safely parameterize fromSearch(...)/CTS-driven filters).

Changes:

  • Introduces CtsParamExpr and updates CTS param(...) plumbing so cts:param() placeholders can be identified and bound to CtsQueryExpr.
  • Implements built-plan CTS query binding by rewriting the plan AST prior to execution; explicitly rejects this for raw plans.
  • Adds/updates tests covering CTS query placeholder export/binding behavior and Optic search roundtrips.

Reviewed changes

Copilot reviewed 10 out of 11 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
marklogic-client-api/src/test/java/com/marklogic/client/test/rows/RowManagerTest.java Adds Optic integration tests for binding cts:param() placeholders in fromSearch(...) plans.
marklogic-client-api/src/test/java/com/marklogic/client/impl/PlanRowColTypesImplTest.java Fixes malformed imports.
marklogic-client-api/src/test/java/com/marklogic/client/impl/CtsParamExprTest.java Adds tests for exporting/binding CTS param placeholders and an end-to-end Optic roundtrip.
marklogic-client-api/src/main/java/com/marklogic/client/type/CtsParamExpr.java Adds generated marker interface for cts:param() placeholders.
marklogic-client-api/src/main/java/com/marklogic/client/impl/RowManagerImpl.java Rejects CTS query placeholder binding for raw plans via explicit UnsupportedOperationException.
marklogic-client-api/src/main/java/com/marklogic/client/impl/PlanBuilderSubImpl.java Stores CTS query bindings on built plans and rewrites AST in getHandle() when bindings exist.
marklogic-client-api/src/main/java/com/marklogic/client/impl/CtsExprImpl.java Makes cts:param() return a CtsParamExpr implementation.
marklogic-client-api/src/main/java/com/marklogic/client/impl/BaseTypeImpl.java Adds utilities to extract cts:param() names and replace param nodes with bound CTS query AST nodes.
marklogic-client-api/src/main/java/com/marklogic/client/expression/PlanBuilderBase.java Adds new bindParam overloads for CTS query bindings.
marklogic-client-api/src/main/java/com/marklogic/client/expression/CtsExpr.java Changes param(...) return types to CtsParamExpr.
.gitignore Ignores .codesight.

@rjdew-progress rjdew-progress force-pushed the MLE-29888 branch 2 times, most recently from 451e1c4 to b2ee274 Compare June 17, 2026 21:10
jonmille
jonmille previously approved these changes Jun 18, 2026
Comment thread marklogic-client-api/src/main/java/com/marklogic/client/impl/BaseTypeImpl.java Outdated
Comment thread marklogic-client-api/src/main/java/com/marklogic/client/impl/RowManagerImpl.java Outdated
Comment thread marklogic-client-api/src/main/java/com/marklogic/client/type/CtsParamExpr.java Outdated
@rjdew-progress rjdew-progress marked this pull request as draft June 24, 2026 17:19
@rjdew-progress rjdew-progress marked this pull request as ready for review June 24, 2026 17:56
@rjdew-progress rjdew-progress merged commit fdd3c1d into develop Jun 25, 2026
3 of 4 checks passed
@rjdew-progress rjdew-progress deleted the MLE-29888 branch June 25, 2026 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants