• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

babelfish-for-postgresql / babelfish_extensions / 25537376300 / 1
77%
BABEL_6_X_DEV: 77%

Build:
Build:
LAST BUILD BRANCH: forxml-auto
DEFAULT BRANCH: BABEL_6_X_DEV
Ran 08 May 2026 05:30AM UTC
Files 127
Run time 6s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 May 2026 04:48AM UTC coverage: 77.056% (-0.1%) from 77.159%
25537376300.1

push

github

web-flow
[OSS-ONLY] Add persistent ANTLR parse tree cache for routines (#4547)

Cache serialized parse trees in sys.babelfish_function_ext to eliminate
redundant ANTLR parsing on first execution in new sessions. The PLtsql
function hash table is session-scoped, so without caching every new
session re-parses large routines from scratch. This reduces first-
execution time from ~2s to ~15ms for routines with ~1300 lines.

Serialized trees use a nodeToString/stringToNode framework modeled after
PostgreSQL's node serialization, with a Perl code generator producing
outfuncs/readfuncs/equalfuncs from annotated PLtsql headers. Extension-
owned NodeTags are offset from 10000 to avoid collision with PG's enum.
Cache is written at CREATE/ALTER time, restored on first EXEC in a new
session, and validated against BABELFISH_VERSION_STR to reject stale
entries after upgrades. Cache writes are skipped on read-only instances.

Caching behavior is controlled at three levels: a session-level GUC
(babelfishpg_tsql.enable_antlr_parse_cache, default true) provides the
global toggle, a per-function setting toggled via
sys.enable_antlr_parse_cache(routine_oid, true/false/NULL) allows
function owners to force-enable, force-disable, or follow the session
GUC, and a superuser-only debug GUC (validate_antlr_parse_cache)
enables roundtrip verification by comparing cached trees against fresh
ANTLR output.

Limitations: trigger functions and event triggers are not cached in this
initial implementation due to differences in datum array layout between
CREATE and EXEC time. These will be addressed in a follow-up.

Task: BABEL-6037

Author: Manisha Deshpande mmdeshp@amazon.com

53832 of 69861 relevant lines covered (77.06%)

401888.91 hits per line

Source Files on job 25537376300.1
  • Tree
  • List 127
  • Changed 13
  • Source Changed 11
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 25537376300
  • 56b641e7 on github
  • Prev Job for on BABEL_5_X_DEV (#25121126774.1)
  • Next Job for on BABEL_5_X_DEV (#25555713367.1)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc