2.0.6 — index-by collections cross MCP
Generates Oracle DAO, SOAP and MCP server code from a config file. This is the source drop for
2.0.6; the running article is the container image.
docker pull ghcr.io/srmadscience/mcpdbwizard:2.0.6
What is new in 2.0.6
Every Oracle scalar type now crosses an index-by collection. DATE, TIMESTAMP and RAW
elements of a PL/SQL index-by table used to remove the entire routine from the tool list — the
gate is per routine rather than per parameter, so one such argument silently hid every operation
that routine would have had. TIMESTAMP WITH [LOCAL] TIME ZONE came out of that gate in 2.0.1; the
remaining three follow here.
If you selected a routine and could not find its tool, this was the likeliest reason. Re-read
tools/list after upgrading — the tools appear with no change to your config.
| Element | Crosses as | Example |
|---|---|---|
DATE |
ISO-8601, time optional | 1990-01-01 |
TIMESTAMP |
ISO-8601, up to 8 fractional digits | 2019-03-01T14:25:36.123456 |
RAW |
base64, not hex | 3q2+7w== for DE AD BE EF |
Two caveats the tool descriptions now state rather than leaving you to discover: an Oracle DATE
has no sub-second precision, so fractional seconds are dropped — neither honoured nor an error.
And a RAW is shown in hex by SQL*Plus and by most tools you will have met one in, but MCP has
no binary type, so it crosses as base64. Hex is not rejected, because it cannot be: DEADBEEF
is also valid base64 and decodes to four completely different bytes.
A sparse index-by of RAW no longer risks NO_DATA_FOUND. The generated PL/SQL walked such a
collection from first to last index without checking each one exists, where the DATE and
TIMESTAMP paths always had. This affects generated DAO code as well as MCP tools, so
regenerate to pick it up.
What this repository is
The generator, its runtime library, the MCP emitter and a database-free test suite that passes on a
clean checkout. No test schema ships — not its DDL, not the configs that introspect it. You
point it at your own Oracle database. Scripts/check_provisioning.sh will tell you which objects a
config expects.
examples/generated-output/ holds 107 generated .java files so you can see what the generator
emits without an Oracle instance to hand.
Honest limits
The image is not signed — no cosign or Sigstore signature, so nothing here identifies the
publisher. It does carry a BuildKit provenance record and an SPDX SBOM, both self-attested by the
same party that publishes the image: useful for what is in it, not evidence of who built it.
Known issues, with a workaround for each, are listed at
https://mcpdbwizard.com/docs/known-issues/