Skip to content

Build with -Psaxon-examples

From: Chapman Flack [email protected]

You seem to be building packages for PG from 11 back to 9.3. For that range of PG versions, it would be possible to add the -Psaxon-examples option on the build command (if you can stomach having the 5 MB Saxon-HE-9.8.0.14.jar as a build dependency). The jar can be left out of the package as an optional runtime dependency. The Saxon examples would just be included in the pljava-examples jar, they would get automatically loaded in PG if the user installs the jar. They wouldn't work unless the user also installed the Saxon-HE jar, but that would be the only step needed for someone who might want to try them.

It's actually safe to add -Psaxon-examples when building for any PG version back to 8.4. Before 8.4, those examples can't be included in pljava-examples.jar because their deployment SQL commands would be syntax errors and prevent installing the jar, which is why I made the build option.

I'm not really following how that relates to the range of PG versions? Because it's "only" 8.4+ ?

The saxon-examples functions are declared with SQL syntax that didn't exist pre-8.4, so they would just be rejected as syntax errors in 8.3 or 8.2.

The documentation illustrating how to call them uses named-parameter notation with => so it works as far back as 9.5, and with a simple substitution of := for => they can be called the same way as far back as 9.0. But the illustrations also show FROM clauses with LATERAL or with a function referring to earlier entries, which is only possible in 9.3+.

So the saxon-examples PG version range dependency boils down to:

  • the functions can be built and installed in any version 8.4 and up
  • they are easy to use in 9.5 and up, following exactly the illustrations in the docs
  • they are almost as easy to use in 9.3 and 9.4, changing => to :=
  • from 9.2 back to 8.4, they work, but require increasing devilish cleverness to write SQL queries that use them.