fix(docs): skip name-dropped CREATE FUNCTION mis-parses - #372
Conversation
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
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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 FUNCTIONmis-parses (keyed on<definition>starting withCREATE FUNCTION) so they don’t inflate/poison the exported function surface. - Preserve operator symbol recovery for genuine
CREATE OPERATORentries 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.
| definition = extract_para_text(memberdef.find('definition')) | ||
| if definition.upper().startswith('CREATE FUNCTION'): | ||
| return None # name-dropped CREATE FUNCTION mis-parse |
| <memberdef kind="function"> | ||
| <name>eql_v3_internal</name> | ||
| <definition>CREATE FUNCTION eql_v3_internal</definition> | ||
| <type>CREATE FUNCTION</type> |
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_privatekeys on the schema in<type>, but here the schema is in<name>, so ~290 of these internal "Unsupported operator blocker" helpers were:### eql_v3_internalfunction 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. GenuineCREATE OPERATORs (definitionCREATE OPERATOR) are still recovered.Result
Unsupportedgone.eq,neq,lt/gt,jsonb_path_query,ste_vec*, term extractors,version, …).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