Skip to content

fix(docs): skip name-dropped CREATE FUNCTION mis-parses - #372

Merged
coderdan merged 1 commit into
eql_v3from
fix/doxygen-schema-name-misparse
Jul 8, 2026
Merged

fix(docs): skip name-dropped CREATE FUNCTION mis-parses#372
coderdan merged 1 commit into
eql_v3from
fix/doxygen-schema-name-misparse

Conversation

@coderdan

@coderdan coderdan commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #369, found while reviewing the generated docs on a Vercel preview.

Problem

Doxygen drops the real name of CREATE FUNCTION <schema>.<name>(... a <schema>.<domain> ...) when an operand is a schema-qualified domain (e.g. b public.text_ord) — the extra . derails its C++ parse. It leaves the schema as the <name> (eql_v3_internal / eql_v3), with <type>=CREATE FUNCTION.

is_private keys on the schema in <type>, but here the schema is in <name>, so ~290 of these internal "Unsupported operator blocker" helpers were:

  • mislabeled public, inflating the public surface 696 → 986, and
  • rendered as a bogus ### eql_v3_internal function on the docs page.

Fix

Skip them, keyed on <definition> (CREATE FUNCTION). Their brief reads "Unsupported operator blocker for …", so the existing operator-symbol recovery (^\S+ operator) would otherwise mis-match and remap them to a junk name (Unsupported) — hence keying on the definition, not the brief. Genuine CREATE OPERATORs (definition CREATE OPERATOR) are still recovered.

Result

  • Manifest 1680 → 1390 functions (696 public, 694 private); zero schema-named entries; Unsupported gone.
  • All real functions retained (eq, neq, lt/gt, jsonb_path_query, ste_vec*, term extractors, version, …).
  • Adds test_schema_name_misparse_is_skipped; all doc-gen tests pass.

The remaining > operator pseudo-function is the pre-existing item tracked in #370.

https://claude.ai/code/session_01CqDNqLSEEkCi7xAJFq7HJA

Follow-up to #369. Doxygen drops the real name of
`CREATE FUNCTION <schema>.<name>(... a <schema>.<domain> ...)` when an
operand type is schema-qualified (e.g. `b public.text_ord`), leaving the
schema as <name>. ~290 of these internal "Unsupported operator blocker"
helpers surfaced as bogus functions named `eql_v3_internal`/`eql_v3`,
mislabeled public (is_private keyed on <type>, but the schema landed in
<name>) — inflating the public surface 696 -> 986 and rendering a bogus
`eql_v3_internal` entry on the docs page.

Skip them, keyed on <definition> (CREATE FUNCTION) rather than the brief:
their brief reads "Unsupported operator blocker for ...", which the
operator-symbol recovery would otherwise mis-match and remap to a junk name
(`Unsupported`). Genuine CREATE OPERATORs (definition CREATE OPERATOR) are
still recovered from the brief.

Manifest: 1680 -> 1390 functions (696 public, 694 private); no schema-named
entries; all real functions retained. Adds test_schema_name_misparse_is_skipped.

Claude-Session: https://claude.ai/code/session_01CqDNqLSEEkCi7xAJFq7HJA
@coderdan coderdan self-assigned this Jul 6, 2026
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 54c9936b-cd81-435f-8975-83f3337e15c9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/doxygen-schema-name-misparse

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 adjusts the Doxygen-XML extraction pipeline to handle a specific Doxygen mis-parse where schema-qualified domain operands cause CREATE FUNCTION <schema>.<name>(...) to be misidentified as a function named only by its schema, and ensures these bogus entries are excluded from generated docs/manifests while preserving genuine CREATE OPERATOR entries.

Changes:

  • Skip schema-named CREATE FUNCTION mis-parses (keyed on <definition> starting with CREATE FUNCTION) so they don’t inflate/poison the exported function surface.
  • Preserve operator symbol recovery for genuine CREATE OPERATOR entries by continuing to remap operator “functions” based on the brief text.
  • Add a regression test ensuring mis-parsed schema-named functions are skipped while operators are retained.

Reviewed changes

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

File Description
tasks/docs/generate/xml-to-markdown.py Skips unrecoverable schema-named CREATE FUNCTION mis-parses while still recovering operator symbols for CREATE OPERATOR.
tasks/docs/generate/test_xml_to_markdown.py Adds regression coverage for the schema-name mis-parse skip behavior and operator preservation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@coderdan
coderdan requested a review from Copilot July 8, 2026 07:03
@coderdan
coderdan merged commit ca91f1a into eql_v3 Jul 8, 2026
20 checks passed
@coderdan
coderdan deleted the fix/doxygen-schema-name-misparse branch July 8, 2026 07:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

Comment on lines +209 to +211
definition = extract_para_text(memberdef.find('definition'))
if definition.upper().startswith('CREATE FUNCTION'):
return None # name-dropped CREATE FUNCTION mis-parse
Comment on lines +218 to +221
<memberdef kind="function">
<name>eql_v3_internal</name>
<definition>CREATE FUNCTION eql_v3_internal</definition>
<type>CREATE FUNCTION</type>
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.

2 participants