Commit graph

26 commits

Author SHA1 Message Date
Yorhel
7c8473533d pg: More verbose error traces
Partly because some errors currently appeared to come from within FU::PG
itself, which is useless, and partly because it's common to wrap
database access methods, while that's exactly the kind of operation
where you *really* want to know where the error originated from.

(Source: too much time wasted debugging VNDB errors)
2025-02-07 11:06:56 +01:00
Yorhel
96aee880ce pg: ->disconnect() and docs 2025-02-07 10:49:47 +01:00
Yorhel
171afc0268 pg: Add transaction & subtransaction support
Was expecting the implementation of this to get overly complicated and
brittle, but using a counter-based cookie and doing parts of it in Perl
made it pretty easy actually.  Pretty happy with how this turned out so
far.

TODO: documentation -.-
2025-02-06 19:12:52 +01:00
Yorhel
9d5905e3b4 pg: Add a few result fetching methods
I'm not sure if these are free from memory leaks, need to find a way to
test for that.
2025-02-06 13:38:07 +01:00
Yorhel
711300b227 pg: Statement execution + better error reporting 2025-02-06 09:05:05 +01:00
Yorhel
922f19e39b pg: Some initial documentation 2025-02-05 14:18:01 +01:00
Yorhel
187417f160 pg: Statement preparing + inspection; less wonky object handling? 2025-02-05 11:49:22 +01:00
Yorhel
c51b5f3598 pg: Better error reporting + basic exec() method 2025-02-03 16:59:18 +01:00
Yorhel
b242176071 pg: Adventures in writing a new postgresql client 2025-02-02 16:22:15 +01:00
Yorhel
0d19ccdc1b Fix build for threaded perl + additional project idea 2025-02-01 13:39:58 +01:00
Yorhel
13eaeb1d4a jsonparse: Add max_depth, max_size and offset options
This completes all the functionality that I wanted from the JSON parser.
2025-02-01 11:01:49 +01:00
Yorhel
abfbba3c10 Add some tests and move some docs 2025-02-01 07:00:09 +01:00
Yorhel
ebe84167e7 jsonparse: A bunch of performance improvements
Turrns out JSON::XS had some pretty good ideas that I could borrow.
2025-01-31 18:42:21 +01:00
Yorhel
ca8d1b72be bench: Add JSON parsing benchmarks + nicer formatting
This shows I got some optimizing to do. I was expecting integer parsing
to be slower, though, but it looks like it can compete with JSON::XS's
specialized small-int parsing code anyway.
2025-01-31 10:36:06 +01:00
Yorhel
7cdc02e399 jsonparse: Add basic JSON parser
Some TODO's left and this needs benchmarking.
2025-01-31 07:29:06 +01:00
Yorhel
aebe5a93dc jsonfmt: Add pretty option
That completes the json_format() function for now. At least, it now does
everything I had planned for it.

Ended up at a bit over 300 LOC. That's larger than I had expected, but
still alright.
2025-01-30 09:11:34 +01:00
Yorhel
1a0fb03205 jsonfmt: Add canonical option
Not as bad as I had expected it to be; managed to keep the
implementation a little bit simpler and cleaner than JSON::XS.
2025-01-29 18:46:27 +01:00
Yorhel
163a60b4ba jsonfmt: Add max_size and max_depth options 2025-01-29 15:05:48 +01:00
Yorhel
a85ff98914 jsonfmt: Add TO_JSON convert_blessed support 2025-01-29 14:16:59 +01:00
Yorhel
8ef2a724d1 jsonfmt: Move arg parsing into XS
Going to need a way to pass arguments into the XS function anyway, so
might as well do the entire arg parsing step in XS while we're at it.
Provides a significant speedup for tiny inputs as well, but I don't find
that too interesting.
2025-01-29 11:42:15 +01:00
Yorhel
e0161cd22c jsonfmt: Add error reporting 2025-01-29 11:02:35 +01:00
Yorhel
3ae9347ad2 bench: Cache benchmark results + better re-run filtering 2025-01-29 10:19:51 +01:00
Yorhel
12326ca8e4 jsonfmt: Fix threading support + memory leak bug 2025-01-28 19:20:46 +01:00
Yorhel
9c8ce3f782 Add benchmarking tool + improve integer formatting performance
Typical priorities: make it fast before fixing all the bugs. *shrug*
2025-01-28 15:02:32 +01:00
Yorhel
c16a9fa493 Add initial JSON formatter
It works and can format all "plain" Perl data, but has a few known bugs
and limitations that still need to be worked out.

It's about 8x smaller than JSON::XS's encoder and *much* smaller than
Cpanel::JSON::XS, but this is just a first attempt, it'll grow.
2025-01-28 09:33:29 +01:00
Yorhel
9c80f2465a Init 2025-01-26 15:32:47 +01:00