Skip to content

MCPDBWizard for Postgres 2.0.35

Choose a tag to compare

@srmadscience srmadscience released this 12 Nov 09:37

A composite or a statement row now always crosses under its Postgres names. Regenerate a server
to get it.

docker pull ghcr.io/srmadscience/mcpdbwizard-postgres:2.0.35
docker pull docker.io/srmadscience/mcpdbwizard-postgres:2.0.35
  • Changed: a name Java cannot hold no longer becomes a Java name over MCP. A composite's
    attributes and a statement's columns already crossed under their own names when those were legal
    Java identifiers, which most are. One that is not — a quoted alias like "Sequence Owner", an
    attribute like "country#fk", two names differing only in punctuation — crossed as the field name
    the generator had to invent (Sequence_Owner, country_fk, a numbered a_b2). It now crosses
    as itself. A statement selecting the same label twice still numbers the second, since one object
    cannot carry two of a key.

    This breaks a client that hard-codes one of the invented names. An agent reads the schemas
    afresh each session and needs nothing; an old key is refused with an error rather than ignored.
    A server keeps its old keys until it is regenerated.

  • Fixed: a tool could be checked against another tool's input schema. The MCP Java SDK caches
    each tool's compiled input schema under a hash of the schema, and two different schemas can hash
    alike. When they did, whichever tool was called first lent its schema to the other: valid calls to
    the second were refused (for example "required property 'a' not found"), and the same mix-up could
    let an invalid call through. Which tools are affected depends on the schemas and on call order.
    Every generated server now keys that cache by the schema's full text. Regenerate to pick this up.

  • Fixed: a VECTOR field inside a record was missing from the composite's schema. The field still
    bound, but a caller reading the schema could not see it. It is now published as an array of
    numbers, as a vector parameter is.

  • Fixed: two tools with the same name stopped the whole server at start-up. A tool name is the
    object's name with every character outside letters and digits made an underscore, so two
    different objects can arrive at the same one. The later one now gets the first free suffix (_2,
    _3, …), and the generation log says which object took which name. Every name that already worked
    is unchanged.

  • New: generation names every selected object it could not find. A routine, table or sequence
    that was dropped or renamed since the config was saved, or that the login can no longer see, used
    to be left out of a batch build without a word. Each is now a warning naming the object and what to
    check.

  • Fixed: a generator run that lost its database connection could exit 0 with nothing generated.
    It now exits 3, so a build script stops instead of carrying on with a missing or partial tree.

  • Fixed: the post-generation script never ran on Linux or macOS. A config's POST_SCRIPT_CONTENT
    is written to POST_SCRIPT_NAME and run after generation, but the file was written without
    execute permission, so every run on Linux or macOS failed with Permission denied and carried on
    without saying so beyond a line in the log. It now runs. Windows was unaffected.

  • Fixed: with WEB_SERVICES=YES, a selected SQL statement could stop the rest of the web-service
    code being generated.
    Generation reported an error and carried on, leaving the service class
    short of the methods that came after the statement.