xtdb

2025-06-12T07:30:06.244799Z

😍 1
πŸŽ‰ 16
jarohen 2025-06-12T07:32:35.461919Z

We're live! πŸš€ Thank you all so much for your help throughout the early access - whether that's been feeding back on use cases, or helping out with bugfixes and repros - it's all very much appreciated gratitude

😍 1
πŸŽ‰ 8
mpenet 2025-06-16T07:06:57.620449Z

congrats on the release!

2025-06-12T09:25:22.064939Z

congrats! hoping to migrate to it soon.

πŸ™Œ 1
kauppilainen 2025-06-12T14:04:33.292449Z

Congrats! Amazing work.

tatut 2025-06-12T07:54:15.968149Z

nice to see a GA release, there were some system defined tables/views (like xt.txs ) are those documented in the docs?

tatut 2025-06-12T10:13:24.717719Z

also, was the HTTP API removed?

Dave Mays 2025-09-16T23:24:28.001919Z

@tatut I'm curious what you're using Prolog + XTDB to do??

tatut 2025-09-17T04:36:34.526199Z

perhaps something some day... I just like tinkering, I don't have an application that I use this for (yet)

Dave Mays 2025-09-17T10:11:50.930619Z

Ha perfect, that is where the most interesting things seem to come from - someone following their curiosity and tinkering.

tatut 2025-09-17T10:13:42.818439Z

my library now talks directly over pg wire protocol, no HTTP API anymore... the pg write protocol is pretty nice actually

πŸ™Œ 1
jarohen 2025-06-12T10:17:20.952339Z

HTTP server wasn't removed, that still exists, but we removed the Clojure HTTP client in favour of a client that talked to the Postgres wire-server instead:

tatut 2025-06-12T10:19:22.391579Z

I didn't see it in the docs, my prolog library is using it https://github.com/tatut/swixt

tatut 2025-06-12T10:19:41.952399Z

but I guess I should migrate that to use ODBC instead

jarohen 2025-06-12T10:20:40.428779Z

If you're using the HTTP API directly, that shouldn't need to change; if you're only using it via the Clojure API, should be able to seamlessly migrate to xtdb.api/client rather than xtdb.client/open-client , then it's the same xtdb.api functions

tatut 2025-06-12T10:21:32.720059Z

ok, is there 2.0.0 docs for the HTTP API?

tatut 2025-06-12T10:22:16.110879Z

iirc, there was some openapi definition in the docs previously, but I can't find it now

jarohen 2025-06-12T10:22:29.014769Z

there's an open-api still but openly it's definitely a second-class citizen to the PG wire server, we're focusing our development effort on the latter

tatut 2025-06-12T10:25:27.080319Z

found the openapi.yaml on github, I can look from there

tatut 2025-06-12T12:19:01.773529Z

noticed that if you accidentally use " quotation in records, the keys will not be recorder

xtdb=> insert into customer records {_id: 3, address: {country: "FI", street: "Street 7", postal: "123456"}, name: "Some Name"}; 
INSERT 0 0
xtdb=> select * from customer where _id = 3;
 _id | address | name 
-----+---------+------
   3 | {}      | 
(1 row)
if I fix those to ' quotation, it works

jarohen 2025-06-13T11:29:23.827549Z

https://github.com/xtdb/xtdb/issues/4531 here

tatut 2025-06-12T12:19:39.421409Z

should there be some error or warning? (using psql as client)

jarohen 2025-06-12T13:47:38.920499Z

yeah, this one catches people out a lot (including me πŸ˜…) but is SQL standard - it's expecting to find columns with those names. we should be returning a warning through the Postgres connection?

tatut 2025-06-12T15:30:01.773199Z

yes, it makes sense when you stop to think about it, but perhaps it should indeed issue a warning as those columns don't exist

jarohen 2025-06-12T15:30:57.101979Z

yep - that the warning isn't getting through is something for us to look into πŸ™‚

Dimitar Uzunov 2025-06-12T15:25:35.070079Z

Kubernetes deployments are likely to be overkill for a lot of teams

πŸ‘ 1
jarohen 2025-06-12T15:37:07.823089Z

agreed, yep - that's why it's not a hard reqmt for XT πŸ™‚

Dimitar Uzunov 2025-06-12T15:46:32.786019Z

I was just going through the docs looking for a simple prod deployment guide and I figured I give some feedback πŸ™‚ Might be nice to have something in between a local dev with a single container and a kubernetes + kafka cluster.. if it is possible, I remember it was in 1.x, can’t easily tell by the 2.x docs

jarohen 2025-06-12T15:49:49.214349Z

ahh, got it - thanks πŸ™‚

refset 2025-07-01T16:11:01.214839Z

Hey @dimitar.ouzounoff would a basic https://docs.k3s.io/ config + guide be a useful "in between" for your needs? It would still need external object storage (s3, MinIO etc.)

Dimitar Uzunov 2025-07-01T19:53:46.517179Z

No, it wouldn’t

Dimitar Uzunov 2025-07-01T19:55:39.477429Z

the v.1 had a benefit of a very simple (as in simple vs easy) deployment; there is nothing simple about kubernetes even if it is convenient sometimes

jarohen 2025-07-01T20:22:56.366909Z

what sort of thing would you be expecting, out of interest? we obviously can't cater for every type of prod deployment on every potential cloud provider, and openly I'd hoped 'simple Docker image' on one end and 'kubernetes' on the other would cover enough cases (or, at least, be adaptable for enough cases) - but it seems I've missed a middle ground? πŸ™‚

refset 2025-07-01T21:19:14.849149Z

Perhaps you're just hoping to use the in-process JAR again, like v1? You can still do that, but we don't recommend it as the default pattern because down the road people often then expect to be able to easily provision and scale the app compute independently of the massive disk and memory requirements for the db compute. Redeploying the app becomes slow, etc. etc.

Dimitar Uzunov 2025-07-02T05:28:56.461529Z

v1 and datomic are simple enough imo; I guess I can try the in-process JAR again

tatut 2025-06-12T15:33:31.900229Z

more tire kicking, I'm trying to call XTDB via the libpq C api, and I guess you can't have parameters that would be deduced by the backend... if I don't pass those in I get

running query: select * from customer where _id > $1 (argc: 1)
Query failed: ERROR:  class java.nio.DirectByteBuffer cannot be cast to class java.lang.Number (java.nio.DirectByteBuffer and java.lang.Number are in module java.base of loader 'bootstrap')
DETAIL:  {"category":"cognitect.anomalies\/incorrect","code":"xtdb.expression\/class-cast-exception","message":"class java.nio.DirectByteBuffer cannot be cast to class java.lang.Number (java.nio.DirectByteBuffer and java.lang.Number are in module java.base of loader 'bootstrap')"}
(I'm just passing paramers as text without giving them type information)

jarohen 2025-06-13T10:43:08.470449Z

https://github.com/xtdb/xtdb/issues/4529 here

tatut 2025-06-12T15:34:40.644749Z

comparing to a string field works, even without passing type info

jarohen 2025-06-12T15:36:17.879359Z

yep, we do generally need to be given type info, more than Postgres, because of the polymorphic nature of XT

jarohen 2025-06-12T15:36:39.747859Z

that said, if you can provide us with a repro there that'd be great - we should be giving a better error message πŸ™‚

tatut 2025-06-12T15:38:54.743529Z

PQexecParams(conn, sql, argc, NULL, query_args, NULL, NULL, 1); so I'm just passing in the values in query_args as char* without any other info

tatut 2025-06-12T15:41:45.057259Z

I'll try with adding a some type info... I guess the type OIDs are stable

tatut 2025-06-12T15:42:22.580969Z

looks like int8 is 20 in both xt and pg17 (and timestamp is 1114)

jarohen 2025-06-12T15:43:40.470409Z

yep, we've taken our type OIDs from Postgres

βœ… 1
jarohen 2025-06-12T15:46:25.242539Z

have you got an example of the query you've sent and the args?

tatut 2025-06-12T16:13:39.179479Z

the above select * from customer where _id > $1 and the 1 args being just "1" cstring

πŸ™ 1