Caveats

Full scan by design, data leaves the database, superuser install, cache per session.

  • Full scan. Every row that reaches jev() goes to the API. That is the product, not a bug. Cut the set with indexed predicates first; Large tables shows the guards.
  • Data leaves Postgres. Row contents are sent to TypeSafe. Do not run it on data you may not share.
  • Untrusted Python. plpython3u runs with the server's OS privileges. Only a superuser can CREATE EXTENSION jev. Where that is possible — and where it is not — is Where it runs, not here.
  • Cache is per backend session. Answers live in PL/Python GD. A connection pool with many backends warms many caches. jev_cache_clear() drops the current session only.

Notices, tokens, and estimated cost are in jev_stats() and the per-batch NOTICE. See Functions and Settings.