rapha has joined #jruby
<rapha> hi all!
<rapha> what's the recommended java version for jruby 9.4.1.0?
<rapha> (i know the readme says "version 8 or higher", but then, the readme also says "rbenv install jruby-9.2.13.0", so i figure it mightn't have been updated in a while)
<byteit101[m]> enebo: -Ptest fails, with tsame java-base add opens warning as before
<enebo[m]> byteit101: thanks. mvn was issue for GHA but now it does have one F on tempfile cleanup (which makes sense to see an issue like that on windows but I think this used to be green on GHA
<byteit101[m]> 3 failures
<enebo[m]> ah so some differences. I will also try now :)
<enebo[m]> byteit101 0 problems for me but I see the [Error] Note thing
<enebo[m]> lol
<enebo[m]> Someone I manage to get that tab inserted
<byteit101[m]> not an error, but warning from not maven
<enebo[m]> byteit101: anyways that I think is mvn or how we are invoking noticing we are passing in something via JDK_JAVA_OPTIONS (or what that env var is)
<byteit101[m]> Yes, I saw that comment in output too
<enebo[m]> We may be able to invoke Java in a way which doesn't see that but I think that is the issue
<byteit101[m]> but spec is also failing still (outside of mvn_
<enebo[m]> I have no failures in -Ptest at all on my env
<enebo[m]> I did have issues until I did a mvn clean where it was picking up an older jar somehow
<enebo[m]> but those errors were only mismatched version of JRuby tests
<byteit101[m]> this is a fresh install as of like 2 weeks ago, though I updated yesterday
<enebo[m]> Also I am using 17 on windows
<byteit101[m]> I tried 19 and 17
<byteit101[m]> same thing
<enebo[m]> If you have gist the errors perhaps we can figure it out
<byteit101[m]> very clean VMs
<enebo[m]> Mine is not clean :)
<byteit101[m]> had to install ant and java fresh for this
<enebo[m]> kares: do you know much about regproc on postgres?
<enebo[m]> In updating oid registration this oid comes back for some resultsets and then tries to look it up
<kares[m]> enebo[m]: Nope
<enebo[m]> ok
<kares[m]> Probably a driver thing,converting?
<enebo[m]> dr-itz had added some code which I think maybe I need to reexamine a bit more since jdbc seems to return string oid and current pg ar stuff only uses fixnum oid values
<enebo[m]> JDBC has a numeric type method but what it returns is not the oid value we are looking for apparently
<enebo[m]> I have 3F and 2E on your local tests with my updates but I get tons of "I have no idea on this typie ... using string"
<byteit101[m]> WARNING: Unknown module: org.jruby.dist specified to --add-opens
<byteit101[m]> WARNING: Unknown module: org.jruby.dist specified to --add-opens
<byteit101[m]> WARNING: Unknown module: org.jruby.dist specified to --add-opens
<byteit101[m]> ^ That's the overwhelming output when running spec
<kares[m]> yeah it's usually best to not rely on the auto casting from the driver ... which happens based onmetadata
<enebo[m]> byteit101: oh ok I will need to try spec run to see if I see that. I did not notice that in -Ptest
<byteit101[m]> spec hangs, I filed a ticket a few weeks ago
<enebo[m]> kares: there is some serious overhead we can kill on postgres if we can get some site caching
<enebo[m]> it will dyn call making results back to oid type map stuff in Rails to regenerate column metadata
<enebo[m]> this could not only use a Java table we could probably cache the resultset column info and just clone it the next time that site is called
<kares[m]> Yeah I recall the new stuff from dr-itz did a few callMethod on hot paths
<enebo[m]> I think rdubya may have done this with the result type
<kares[m]> but it's been a while for me...
<enebo[m]> but it is ok. we were still pretty fast in comparison
<kares[m]> I only tested MySQL so I do not know about PG
<enebo[m]> I just realized if we could site cache that metadata row it would just be a clone per call
<headius> Good morning
<headius> I'm going to be looking into some of these JFFI issues so we can fix them for 9.4.2
<headius> At the very least this glibc thing
<enebo[m]> I also wondered if some calls to Result and some are more raw but I have not started looking at it yet today
<headius> Super freaking annoying that RHEL is locked to some ancient version of glibc but that's the way it is
<enebo[m]> on major motivation in PG:Result was being able to partially emulate pg itself so I am happy that is there
<kares[m]> believe in MySQL we extract strings as bytes ... which avoids intermittent Java string
<enebo[m]> mini_sql and some other things mostly work
<enebo[m]> that might be true of postgres too but I would have to look
<enebo[m]> the truth is we register all the default OIDs on setup and this regproc thing is constantly happening so if I can figure out what the hell it is I can register it
<enebo[m]> headius: I am trying to just get this last snag on local arjdbc tests not passing postgresql but the oid type mapping stuff is not simple when you don't understand it 😀
<enebo[m]> I may have to read a lot of code now
<headius> maybe learn
<enebo[m]> haha
<enebo[m]> bill henley learned it
<headius> good old bill
<byteit101[m]> oh speaking of pg and kares being around, what should I go about to get unixsocket jars as a gem for postgres?
<byteit101[m]> the homepage of jdbc-postgresql looks like a very old and different gem
<headius> we ship with jnr-unixsocket, is that not enough?
<byteit101[m]> not to use the "official" documentation jdbc strings
<enebo[m]> oh wait
<byteit101[m]> let me find it real quick
<enebo[m]> byteit101: I don't think that is a real gem
<byteit101[m]> *postgres not postgresql
<enebo[m]> Or I think someone started a gem to do native pg stuff but no one worked on after a point
<headius> I did
<headius> and then someone else did a massive amount of additional work to actually port the pg C library into it
<byteit101[m]> ?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg&socketFactoryArg=/var/run/postgresql/.s.PGSQL.5432"
<headius> and then they left
<byteit101[m]> ^ requires junixsocket, not jnr-unixsocket
<headius> so there it sit
<headius> sits
<enebo[m]> so when I saw not real I mean not used and not worked on
<enebo[m]> not that someone did not spend effort to get to that point
<byteit101[m]> 42.2.25 - February 10, 2022 (2.52 MB)
<headius> byteit101: bleah, ok
<enebo[m]> byteit101: what url?
<headius> well these libs should probably all gets witched to jar-dependencies rather than publishing jar gems
<headius> then you'd just include it in the jar-dependencies
<headius> arjdbc-pgsql would just use jar-deps to depend on the published pgsql jdbc maven artifact, and then that would pull in the junixsocket jar too
<enebo[m]> I actually just updated to a later version yesterday on that
<enebo[m]> this is part of arjdbc
<byteit101[m]> was trying to follow sequel docs, but jdbc/jruby wasn't obvious
<enebo[m]> I did not commit it but I saw a dependabot thing on it
<enebo[m]> I thought you were talking about a different thing not arjdbc
<enebo[m]> but it would be nice to not have to commit those artifacts into a repo
<byteit101[m]> This was for a nearly one-off script, and I've used sequel before, so tried to find unix socket connections/postgres stuff from there, but only saw proper jdbc documentation
<enebo[m]> so we support unix socket cnonection mechanism and that itself is leveraging the postgresql driver we ship in arjdbc
<headius> someone should try using panama to generate a Java binding to the pg native library
<headius> that would be hot
<headius> sorry, that would be fire
<enebo[m]> headius: it would make supporting it a lot simpler
<headius> that's for sure
<headius> we could write the entire adapter in Ruby
<byteit101[m]> once I got the jars ^ it just worked with sequel, but the documentation and setup was lacking
<enebo[m]> but as I just said I see some optimization potential for using arjdbc still
<enebo[m]> like site caching statement metadata for result sets and just cloning it
<headius> and of course the portability aspect is still huge
<enebo[m]> yeah like windows
<enebo[m]> although I am sure pg does compile if the right wizard builds it
<enebo[m]> although perhaps it is a binary gem
<headius> never trust a wizard
<enebo[m]> yikes
<headius> 🧙‍♂️
<enebo[m]> why is that so big
<headius> 🧙🏿‍♀️
<enebo[m]> foo🧙‍♂️🧙🏿‍♀️
<enebo[m]> hmm
<enebo[m]> The more I discover of this client the weirder it gets
<headius> it's not super big for me, maybe 2.5 lines high
<enebo[m]> yeah but a single char if you add any textr
<headius> but yeah some chat clients do this for standalone emoji
<enebo[m]> ok I will take your word for that
<headius> 🧙‍♂️💩
<byteit101[m]> my client (fractal) is also 2.5 lines tall for emoji-only lines
<enebo[m]> haha ok so if only emoji go big or go home
<headius> ok one of these jnr things may just be an unimplemented feature
<byteit101[m]> though if I scroll up too far in history it garbles my text for some reason
<headius> I'm going to focus on the glibc version thing
<enebo[m]> Too bad twitter is not like this...I could spam elon
<enebo[m]> headius: the RHEL old vs new glibc?
<headius> yeah
<enebo[m]> cool
<headius> most of the linux jffi libs are being built via GHA or GHA + qemu + docker so I'll have to figure out how to force an older glibc
<enebo[m]> <byteit101[m]> "?socketFactory=org.newsclub.net..." <- This is interesting. I did not realize this was possible
<enebo[m]> Or if I did I forgot
<enebo[m]> It would be a boon if arjdbc could just connect like this
<enebo[m]> kares: ^
<enebo[m]> I always use localhost + pw/port connection
<byteit101[m]> socket connections are handy but often unused. Note the full uri is 'jdbc:postgresql://locahost/yourdatabasetame' plus the query string above
<enebo[m]> but I might just be a bit ignorant on this
<headius> maybe we can configure a different socket factory and add it to jnr-unixsocket?
<byteit101[m]> this is the only server I use that has socket auth only
<headius> or patch the driver to allow us to configure it
<byteit101[m]> that would be handy, but then we would need to document it either on jruby or sequel, etc
<enebo[m]> yeah just wrap it and make it super convenient
<enebo[m]> monkeypatch magic
<enebo[m]> arjdbc will add some stuff and formulate a connection string with at least some options
<byteit101[m]> (for reference, I'm not using active record with this one-off script, just sequel)
<kares[m]> enebo[m]: yeah I can imagine it would work, MySQL driver added Unix connection a while back, but there wasn't much demand for it in the end, what's the benefit - avoiding TCP?
<enebo[m]> kares: just simplicity of matching up with an existing config
<kares[m]> okay
<enebo[m]> If someone wants to try JRuby they need to probably change PG config to even allow networking
<byteit101[m]> Auth can also be simpler sometimes, the server I am using just uses no password, only your OS username as the db username
<enebo[m]> in prod this is not a big deal but as a dev kicking the tires it is a pain
<enebo[m]> it is a pain for me personally every time I re-install postgres I am editing that auth config stuff in postgres
<byteit101[m]> all of the usages of it I've seen (which is like 3 over 15 years) is auth-focusd
<byteit101[m]> (pg and mysql both )
<enebo[m]> I should not use pg to say postgres but postgres is icky to type I will say 'pg gem' otherwise I mean pg == postgres
<byteit101[m]> do you mean postgresql when you type postgres ? ;-D
<enebo[m]> byteit101: the unix domain socket is just the default setup
<enebo[m]> hahaha
<enebo[m]> yeah postgresql
<enebo[m]> postgres is dead right?
<byteit101[m]> uh, I though the proper name is postgresql and postgres is the colloqialism
<enebo[m]> no I don't think so
<enebo[m]> I think postgres was a version of ingres which added effectively oids
<byteit101[m]> oh nope you are sort of right, it used to be called postgres decades ago before sql support was added
<enebo[m]> but I think back then it was a commercial product
<enebo[m]> but I remember a friend was going gaga over postgres I think in the late 80s at work
<headius> didn't it grow out of ingres or was it a separate project to make an open-source ingres?
<enebo[m]> and I also thought it support sql although perhaps it was not "technically" sql like most dbs back then were sql-like
<byteit101[m]> yes
<byteit101[m]> wikipedia page has the history
<enebo[m]> headius: yeah I think it was just custom data types on ingres
<enebo[m]> oh good idea :)
<byteit101[m]> setting the env var lets spec not hang on windows, but 234 failures, 153 errors
<enebo[m]> ah yeah funny how many enduring things have come out of berkeley
<enebo[m]> I suppose unix cannot be attributed to berkeley but it did a lot to popularize it as sysv unix was not nearly as popular among at least the college crowd
<byteit101[m]> gotta go now, but the windows errors are holding up my subspawn-win32 developement
<enebo[m]> byteit101: sorry which env did you set?
<byteit101[m]> updated ticket
<enebo[m]> byteit101: thanks. see it now
<byteit101[m]> good, will be around again tomrrow
<enebo[m]> byteit101: cya
<headius> well good news is that I rolled back the debian we use to build jffi binaries from debian:10 to debian:8 and everything still builds
<headius> jury's out as to whether that's old enough, because debian:8 uses glibc 2.19 and CentOS 7 uses glibc 2.17
<headius> ok barring me installing centos on a VM I'm going to let this stew for a bit and review 9.4.2 issues
<headius> hopefully one of the reporters will get back to us and say the new binary works ok
<rapha> enebo[m]: byteit101[m]: can you see / read me my messages?
<rapha> s/me//
<rapha> headius: how about you? seems you're not here via the matrix bridgelll