pgjdbc/pgjdbc GitHub issues and pull requests (mirror)
help / color / mirror / Atom feed[pgjdbc/pgjdbc] PR #3396: SQLData Support
67+ messages / 5 participants
[nested] [flat]
* [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-05 20:24 "crowmagnumb (@crowmagnumb)" <[email protected]>
0 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-05 20:24 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
### All Submissions:
* [x ] Have you followed the guidelines in our [Contributing](https://github.com/pgjdbc/pgjdbc/blob/master/CONTRIBUTING.md) document?
* [ x] Have you checked to ensure there aren't other open [Pull Requests](../../pulls) for the same update/change?
### New Feature Submissions:
1. [ x] Does your submission pass tests? (But tests need to be written for it)
2. [ x] Does `./gradlew styleCheck` pass ?
3. [ ] Have you added your new test classes to an existing test suite in alphabetical order? (I have yet to write tests)
Here is the start of my proposal for handling classes that implement java.sql.SQLData. I have not written any tests yet because I wanted to make sure this was even of interest to the comunity. I have been using the impossibl driver for some time now because I've been quite heavily using SQLData. But development on that driver has essentially terminated, so I was determined to get SQLData implemented here.
This implementation also currently ignores things like Blob's and Clob's because it would take a little more refactoring/reuse of PgResultSet to get those working. But it handles all the other basic types and, in fact, handles all the needs I have of it at present. i.e. pretty fully functional. I wanted to show my solution with as much minimal change to the existing code as I could get and you can see I did that with basically just a couple lines added to PgResultSet. I envision PgResultSet and PgSQLInput extending the same abstract class that allows them to extract values Integer, SQLData, Blob, etc. from the same parent class. The former using the bytes[] as it currently does, and the latter using the string value.toBytes[].
So being new to this community, I don't exactly know where to start on this and since it feels like a pretty big addition, I thought I would just present what I have and start the discussion before putting more work in.
Cheers
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-05 23:52 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-05 23:52 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
have you looked at https://github.com/pgjdbc/pgjdbc/pull/3306
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-06 12:39 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-06 12:39 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
To confirm, it is of interest.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-06 12:39 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-06 12:39 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
2024
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-07 16:24 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-07 16:24 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
I just copied the header from PgResultSet.java. :)
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-07 16:30 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-07 16:30 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
So the protocol here is to copyright it the year the file was created I guess?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-07 16:33 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-07 16:33 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> have you looked at #3306
Yes, of course because I've commented on it. :) But I didn't look too carefully at it yet, and I had already built this code in my own work for Happywhale. I'll see what I can do to compare and merge these 2 ideas.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-07 19:00 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-07 19:00 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> > have you looked at #3306
>
> Yes, of course because I've commented on it. :) But I didn't look too carefully at it yet, and I had already built this code in my own work for Happywhale. I'll see what I can do to compare and merge these 2 ideas.
Excellent, thanks!
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-09 18:54 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-09 18:54 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> have you looked at #3306
Yes, of course because I've commented on it. :) But I didn't look too carefully at it yet, and I had already built this code in my own work for Happywhale. I'll see what I can do to compare and merge these 2 ideas.
> > > have you looked at #3306
> >
> >
> > Yes, of course because I've commented on it. :) But I didn't look too carefully at it yet, and I had already built this code in my own work for Happywhale. I'll see what I can do to compare and merge these 2 ideas.
>
> Excellent, thanks!
OK, as I thought, these are independent from one another. That pull request deals with supporting java.sql.Struct and I'm dealing with supporting java.sql.SQLData.
So I believe these to be completely separate.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-09 20:26 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-09 20:26 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
The AppVeyor build keeps failing. How do we get that to succeed?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-09 21:35 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-09 21:35 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
OK, I think this is my actual proposal and just need to add tests. I am not implementing anything that the PgResultSet itself does not implement. In addition, I did not implement readBlob(), readClob(), and readArray() as the PgResultSet implementations of this all rely on the oid of the column which doesn't apply here and so that code would have to be reviewed to figure out how to create these objects without relying on that param. But otherwise I think this is a go.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-09 22:22 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-09 22:22 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
How do I get tests to run locally? I get a ton of errors if I try to run tests. So not sure how to write a test to submit until I can run what is there successfully. Can anyone help me?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-09 23:11 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-09 23:11 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
see https://github.com/pgjdbc/pgjdbc/blob/master/CONTRIBUTING.md
`./gradlew test --tests org.postgresql.test.ssl.SslTest # execute test by class`
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-09 23:14 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-09 23:14 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
Do we know how well this plays with Graalvm native ?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-09 23:41 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-09 23:41 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
I don't.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-10 18:41 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-10 18:41 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
You can run checker framework locally too.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-10 19:00 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-10 19:00 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> You can run checker framework locally too.
I found that in the docs now. Cheers!
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-10 22:25 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-10 22:25 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
I am super struggling with CheckerFramework. Would love some help with that. I seem to be doing everything as it is done elsewhere but having to suppress warnings that I don't think I should repress. And I can't get the byte[] result to play nice. :(
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-10 23:04 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-10 23:04 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
Yes, year it was created
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-13 14:45 ` "binoverfl0w (@binoverfl0w)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: binoverfl0w (@binoverfl0w) @ 2024-10-13 14:45 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
I remember running into this as well. Set **enableCheckerframework** build parameter to **true** as it is false by default. https://github.com/pgjdbc/pgjdbc/blob/fcc13e70e6b6bb64b848df4b4ba6b3566b5e95a3/build-logic/build-par...
I tried to run ```./gradlew checkstyleAll``` and it gave the same error as the one reported here.
The fixes seem trivial. From a quick look, the patch below gets rid of the failures.
A helpful note on ```@Nullable byte[]``` vs ```byte @Nullable []``` that might be of interest: http://errorprone.info/bugpattern/NullablePrimitiveArray
Since ```@SupressWarnings``` cannot be applied to statements, you may consider moving the following block
```java
if ("NULL".equals(item)) {
java.lang.reflect.Array.set(results, i, null);
} else {
java.lang.reflect.Array.set(results, i, converter.apply(item));
}
```
in a separate function and annotate that with ```@SurpressWarnings("nullable")``` instead of annotating ```#getConverter``` with ```@SuppressWarnings({"unchecked", "nullness"})```
Anyway once you face the same errors locally you will be able to better reason about such details.
```
Subject: [PATCH] fix CheckerFramework failures
---
Index: pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java (revision c664b7d767951d48df94f1a84084e4d86f688e91)
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java (date 1728829537425)
@@ -151,7 +151,7 @@
@SuppressWarnings({"override.return", "nullness.on.primitive", "return"})
@Override
- public @Nullable byte[] readBytes() throws SQLException {
+ public byte @Nullable [] readBytes() throws SQLException {
return getNextValue(bytesConv);
}
@@ -187,7 +187,8 @@
@Override
public InputStream readBinaryStream() throws SQLException {
- return new ByteArrayInputStream(readBytes());
+ byte[] bytes = readBytes();
+ return new ByteArrayInputStream(bytes == null ? new byte[0] : bytes);
}
@SuppressWarnings("override.return")
@@ -253,13 +254,13 @@
throw Driver.notImplemented(this.getClass(), "readNString()");
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({"unchecked", "nullness"})
private <T> SQLFunction<String, T> getConverter(Class<T> type) throws SQLException {
if (type.isArray()) {
Class<?> itemType = type.getComponentType();
SQLFunction<String, ?> converter = getConverter(itemType);
return (value) -> {
- List<String> items = new SQLDataReader().parseArray(value);
+ List<@Nullable String> items = new SQLDataReader().parseArray(value);
Object results = java.lang.reflect.Array.newInstance(itemType, items.size());
for (int i = 0; i < items.size(); i++) {
String item = items.get(i);
```
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-23 02:06 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-23 02:06 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
Thanks @binoverfl0w ! I've started implementing your suggestions while also trying to figure out a better solution for the array issue. Which has lead me to include code on trying to solve the issue where we want to read directly an array of objects implementing SQLData. But again I'm getting super frustrated with the enableCheckerframework. I honestly can't understand what it's trying to tell me or complain about. :(
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-23 05:51 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-10-23 05:51 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@vlsi can you help out with checkerframework issues ?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-23 08:19 ` "vlsi (@vlsi)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: vlsi (@vlsi) @ 2024-10-23 08:19 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgArray.java)
This fails because `array` is declared as an array holding non-nullable, so the checker forbids assigning `null` there.
If you need nullable array of nullable objects, then you need to declare it as `@Nullable Object @Nullable [] array`
---
Here's a quick tip: https://github.com/pgjdbc/pgjdbc/blob/master/CONTRIBUTING.md#null-safety
```java
// array and elements: non-nullable
String[] x;
// array: nullable, elements: non-nullable
String @Nullable [] x;
// array: non-nullable, elements: nullable
@Nullable String[] x;
// array: nullable, elements: nullable
@Nullable String @Nullable [] x;
```
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-25 17:47 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-25 17:47 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgArray.java)
Ah thanks, I had that backward. I tried it the other way, but it was late, and I think I confused the error I got after that with a problem with this line. Anyway, thanks, resolved now.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-26 19:09 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-10-26 19:09 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@visi @davecramer OK, Now I added in some auto-conversion of types getObject(T[]) that the impossibl driver handles. BUT I'm still having another issue with CheckerFramework that I just can't figure out how to handle. But it is with the weird java.lang.reflect code that I have to use because I can't seem to figure out how to get a generic version of an Array any other way.
Also I tried to implement SQLInput.readArray() but as I guessed there is a problem with the oid so I've commented that out and made it again. Not implemented. NOTE: I don't use this in my code anywhere (I use the above getObject(T[]) instead, but I thought for completeness it would be nice. So if anyone has any ideas there.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-28 10:43 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: JavaUnchained (@JavaUnchained) @ 2024-10-28 10:43 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
Hi. I think the problem with the array is due to the fact that the OID is specified for a simple TEXT and not TEXT_ARRAY, so TypeInfo does not return anything in response to getPGArrayElement . But this does not solve the typing problem.
If we had a buildArray map with only 1 element in it, then everything would be pretty trivial and would look something like this (below are just thoughts) :
```
private Object buildArray(ArrayDecoding.PgArrayList input, int index, int count, @Nullable Map<String, Class<?>> map) throws SQLException {
final BaseConnection connection = getConnection();
int elementOid = 0; // unspecified
if (map != null && typeMap.size() == 1) {
Optional<Map.Entry<String, Class<?>>> entryOp = typeMap.entrySet().stream().findFirst();
if (entryOp.isPresent()) {
Map.Entry<String, Class<?>> entry = entryOp.get();
if (SQLData.class.isAssignableFrom(entry.getValue()) || connection.getTypeInfo().getPGType(entry.getKey()) != 0) {
elementOid = connection.getTypeInfo().getPGType(entry.getKey());
}
}
}
Object array = ArrayDecoding.readStringArray(index, count, elementOid , input, connection);
```
But I also doubt that someone will specify not UDT in the map, but simple types too
p.s I'm sorry for writing this here. I'm just very interested in the functionality that you've implemented.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-28 10:47 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: JavaUnchained (@JavaUnchained) @ 2024-10-28 10:47 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
It also seems to me that if (type == Byte.class ) there is not enough primitive type checking, which is available for all types except byte. Something like this:
```
if (type == Byte.class || type == byte.class) {
return (SQLFunction<String, T>) byteConv;
}
```
In the getConverter. We are checking Array. Should we also check SQLXML there?
p.s I'm sorry for writing this here. I'm just very interested in the functionality that you've implemented.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-10-28 15:19 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: JavaUnchained (@JavaUnchained) @ 2024-10-28 15:19 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
Another way to support array, ( i made it In my own wrapper, and it works well ) . I just extended the SqlInput interface by adding new method to it:
```
readArray(Class<T> arrayElement)
```
And in my SQLData i cast SQLInput to my SQLInputExt and just explicitly set element type. I make a map with simple types and compare them with java primitives and postgres primitives. And I take udt from connection.getTypeMap()
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-11-20 08:51 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: JavaUnchained (@JavaUnchained) @ 2024-11-20 08:51 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
Please note that this piece of code probably doesn't work the way you expect
```
if (isWhitespace(ch)) {
++charIdx;
while (charIdx < len && isWhitespace(value.charAt(charIdx))) {
++charIdx;
}
break;
}
```
You can run the method on such a line, for example, and verify this:
```
"( "a" , "b" , "c" )"
```
This code should find the index of the next non-whitespace character and call cotninue.
And there is no need for a go-to label in this method. You can do without the label in readString too by replacing switch with if-else
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-11-21 13:46 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-11-21 13:46 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/SQLDataReader.java:145)
Check the comment in the conversation about this
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-11-26 19:44 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2024-11-26 19:44 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/SQLDataReader.java:145)
Sorry all, I have been swamped at my work. I will get back to this. Thank you for continuing to review this work.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2024-11-28 11:14 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2024-11-28 11:14 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/SQLDataReader.java:145)
@crowmagnumb work does get in the way. Thanks for working on this.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-01-10 21:42 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-01-10 21:42 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> Please note that this piece of code probably doesn't work the way you expect
>
> ```
> if (isWhitespace(ch)) {
> ++charIdx;
> while (charIdx < len && isWhitespace(value.charAt(charIdx))) {
> ++charIdx;
> }
> break;
> }
> ```
>
> You can run the method on such a line, for example, and verify this:
>
> ```
> "( "a" , "b" , "c" )"
> ```
>
> This code should find the index of the next non-whitespace character and call cotninue.
>
> And there is no need for a go-to label in this method. You can do without the label in readString too by replacing switch with if-else
You are absolutely right. This parsing code I more or less got from the impossibl driver since I knew that it worked. I really didn't analyze it too much because it works for what postgresql gives you. But yeah, I'll clean it up. Cheers.
I think it works just fine because postgresql doesn't give you any whitespace (no surprise there, why waste bytes on whitespace?). So tecnically we could probably just remove that check. But maybe best to have just in case? But make it work correctly. :)
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-01-10 22:35 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-01-10 22:35 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@JavaUnchained Do you want to directly help me with this? :) I can give you access to my fork and I'm happy for you to work on it with me. :)
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-01-10 23:02 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-01-10 23:02 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> It also seems to me that if (type == Byte.class ) there is not enough primitive type checking, which is available for all types except byte. Something like this:
>
> ```
> if (type == Byte.class || type == byte.class) {
> return (SQLFunction<String, T>) byteConv;
> }
> ```
>
> In the getConverter. We are checking Array. Should we also check SQLXML there?
>
> p.s I'm sorry for writing this here. I'm just very interested in the functionality that you've implemented.
I just added these. cheers.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-01-10 23:08 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-01-10 23:08 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> Another way to support array, ( i made it In my own wrapper, and it works well ) . I just extended the SqlInput interface by adding new method to it:
>
> ```
> readArray(Class<T> arrayElement)
> ```
>
> And in my SQLData i cast SQLInput to my SQLInputExt and just explicitly set element type. I make a map with simple types and compare them with java primitives and postgres primitives. And I take udt from connection.getTypeMap()
Ah, well I don't use readArray() either I use readObject(T[].class) and that works great. But I'm trying to support the full interface even if I won't use it. :)
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-01-11 01:21 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-01-11 01:21 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@davecramer Looks like I finally got CheckerFramework to be happy. What's the next step?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-15 20:09 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-03-15 20:09 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgArray.java)
can you use the resource lock here. see https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-15 20:13 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-03-15 20:13 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
is there a reason to keep this here ?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-15 20:16 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-03-15 20:16 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/test/java/org/postgresql/test/jdbc2/SQLDataTest.java)
is there a reason to keep this here?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-15 20:17 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-03-15 20:17 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
other than my most recent comments I'm OK with this
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-20 23:46 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-20 23:46 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgSQLInput.java)
No, was just keeping until this was all resolved. Cheers.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-20 23:46 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-20 23:46 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/test/java/org/postgresql/test/jdbc2/SQLDataTest.java)
No, was just keeping until this was all resolved. Cheers.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-20 23:46 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-20 23:46 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/PgArray.java)
Done.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-20 23:47 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-20 23:47 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> other than my most recent comments I'm OK with this
OK, took care of your last few requests.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 12:28 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-03-21 12:28 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
looks like code style then we are good to go.
@vlsi can you take a look?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 16:37 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-21 16:37 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> looks like code style then we are good to go.
>
> @vlsi can you take a look?
Oops, yeah these were working before I merged main in. I only did that to satisfy myself that it was fine and honestly forgot that it would trigger an auto-update here. Oops. But again, these checks were working before that. I can take a look too.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 16:43 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-21 16:43 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> > looks like code style then we are good to go.
> > @vlsi can you take a look?
>
> Oops, yeah these were working before I merged main in. I only did that to satisfy myself that it was fine and honestly forgot that it would trigger an auto-update here. Oops. But again, these checks were working before that. I can take a look too.
Ah no, maybe I'll leave it to you @vlsi or at least till you advise me. After adding static to the private methods it then complained about default character sets and I don't know how to proceed with that.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 18:45 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-03-21 18:45 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
just use `StandardCharset.UTF_8`
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 19:58 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-21 19:58 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> just use `StandardCharset.UTF_8`
OK, I think I've satisfied the new Style requirements, but now my test is suddenly failing with the following ....
FAILURE 0.0sec, org.postgresql.test.jdbc2.SQLDataTest > initializationError
org.postgresql.util.PSQLException: FATAL: role "test" does not exist
at app//org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2734)
at app//org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2846)
at app//org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:176)
at app//org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:327)
at app//org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
at app//org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:274)
at app//org.postgresql.Driver.makeConnection(Driver.java:448)
at app//org.postgresql.Driver.connect(Driver.java:298)
at platform/[email protected]/java.sql.DriverManager.getConnection(DriverManager.java:681)
at platform/[email protected]/java.sql.DriverManager.getConnection(DriverManager.java:190)
at app//org.postgresql.test.TestUtil.openDB(TestUtil.java:401)
at app//org.postgresql.test.TestUtil.openDB(TestUtil.java:350)
at app//org.postgresql.test.jdbc2.SQLDataTest.setUp(SQLDataTest.java:67)
Suppressed: org.postgresql.util.PSQLException: FATAL: role "test" does not exist
at app//org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2734)
at app//org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2846)
at app//org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:176)
at app//org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:327)
at app//org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
at app//org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:274)
at app//org.postgresql.Driver.makeConnection(Driver.java:448)
at app//org.postgresql.Driver.connect(Driver.java:298)
at platform/[email protected]/java.sql.DriverManager.getConnection(DriverManager.java:681)
at platform/[email protected]/java.sql.DriverManager.getConnection(DriverManager.java:190)
at app//org.postgresql.test.TestUtil.openDB(TestUtil.java:401)
at app//org.postgresql.test.TestUtil.openDB(TestUtil.java:350)
at app//org.postgresql.test.jdbc2.SQLDataTest.tearDown(SQLDataTest.java:117)
FAILURE 0.2sec, 1 completed, 1 failed, 0 skipped, org.postgresql.test.jdbc2.SQLDataTest
FAILURE 0.7sec, 1 completed, 1 failed, 0 skipped, Gradle Test Run :postgresql:test
1 test completed, 1 failed
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 20:00 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-21 20:00 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> FAILURE 0.0sec, org.postgresql.test.jdbc2.SQLDataTest > initializationError org.postgresql.util.PSQLException: FATAL: role "test" does not exist at app//org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2734) at
I have a table called "test" in my test but I don't create a role called "test". Is there a new requirement to do so?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 20:01 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-03-21 20:01 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> > FAILURE 0.0sec, org.postgresql.test.jdbc2.SQLDataTest > initializationError org.postgresql.util.PSQLException: FATAL: role "test" does not exist at app//org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2734) at
>
> I have a table called "test" in my test but I don't create a role called "test". Is there a new requirement to do so?
I run my test with ...
```sh
./gradlew cleanTest test --tests org.postgresql.test.jdbc2.SQLDataTest
```
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-03-21 20:27 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-03-21 20:27 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
seems to be fine here.
@vlsi any issues before I merge ?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-04-03 23:43 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-04-03 23:43 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> seems to be fine here. @vlsi any issues before I merge ?
Well? :)
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-04-04 12:32 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-04-04 12:32 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> > seems to be fine here. @vlsi any issues before I merge ?
>
> Well? :)
Give it a week. Conference season.
Rebasing would get rid of the one error.
Thanks,
Dave
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-04-28 22:45 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-04-28 22:45 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@crowmagnumb can you rebase to get rid of the one error ?
Thanks!
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-04-29 02:49 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-04-29 02:49 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@davecramer Ah, sorry, didn't realize you were asking me to do that. Thought that was a directive to the @vlsi. I just used the github web interface to sync that branch with the fork. Hope that was what you meant by rebasing. :)
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-05-05 21:53 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-05-05 21:53 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/SQLDataReader.java)
Use PSQLException(GT.tr("An accessible no-arg constructor is required for type {0}", type" ... so we can have translations. State might be SYNTAX_ERROR
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-05-05 21:55 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-05-05 21:55 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/SQLDataReader.java:70)
It would be useful for future readers to have a comment here showing examples of what would potentially be parsed.
Also some comments in each step such as , found `,` moving to next item. etc.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-05-05 22:24 ` "davecramer (@davecramer)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: davecramer (@davecramer) @ 2025-05-05 22:24 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
Do we have a plan to implement the writer ?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-05-12 18:29 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-05-12 18:29 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/SQLDataReader.java)
Done
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-05-12 18:29 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-05-12 18:29 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
(on pgjdbc/src/main/java/org/postgresql/jdbc/SQLDataReader.java:70)
Done
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-05-12 18:31 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-05-12 18:31 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> Do we have a plan to implement the writer ?
I would love to do that in the future. Was hoping we could implement the reader first without it. But yes, I would be happy to have that on my TODO list.
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-05-27 01:42 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-05-27 01:42 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@davecramer Any other thoughts/needs?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-06-08 18:05 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-06-08 18:05 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
> @davecramer Any other thoughts/needs?
poke
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-07-10 21:59 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-07-10 21:59 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@davecramer Is there anything I can do here?
^ permalink raw reply [nested|flat] 67+ messages in thread
* Re: [pgjdbc/pgjdbc] PR #3396: SQLData Support
@ 2025-12-25 20:24 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
65 siblings, 0 replies; 67+ messages in thread
From: crowmagnumb (@crowmagnumb) @ 2025-12-25 20:24 UTC (permalink / raw)
To: pgjdbc/pgjdbc <[email protected]>
@davecramer @vlsi I get there is a huge backlog of pull requests to deal with, but just curious what the outlook of this is. I have to keep my personal repo up-to-date and build that to get a working jdbc driver for me. I would love to go back to getting releases from you all. :)
^ permalink raw reply [nested|flat] 67+ messages in thread
end of thread, other threads:[~2025-12-25 20:24 UTC | newest]
Thread overview: 67+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2024-10-05 20:24 [pgjdbc/pgjdbc] PR #3396: SQLData Support "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-05 23:52 ` "davecramer (@davecramer)" <[email protected]>
2024-10-06 12:39 ` "davecramer (@davecramer)" <[email protected]>
2024-10-06 12:39 ` "davecramer (@davecramer)" <[email protected]>
2024-10-07 16:24 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-07 16:30 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-07 16:33 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-07 19:00 ` "davecramer (@davecramer)" <[email protected]>
2024-10-09 18:54 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-09 20:26 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-09 21:35 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-09 22:22 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-09 23:11 ` "davecramer (@davecramer)" <[email protected]>
2024-10-09 23:14 ` "davecramer (@davecramer)" <[email protected]>
2024-10-09 23:41 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-10 18:41 ` "davecramer (@davecramer)" <[email protected]>
2024-10-10 19:00 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-10 22:25 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-10 23:04 ` "davecramer (@davecramer)" <[email protected]>
2024-10-13 14:45 ` "binoverfl0w (@binoverfl0w)" <[email protected]>
2024-10-23 02:06 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-23 05:51 ` "davecramer (@davecramer)" <[email protected]>
2024-10-23 08:19 ` "vlsi (@vlsi)" <[email protected]>
2024-10-25 17:47 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-26 19:09 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-10-28 10:43 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
2024-10-28 10:47 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
2024-10-28 15:19 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
2024-11-20 08:51 ` "JavaUnchained (@JavaUnchained)" <[email protected]>
2024-11-21 13:46 ` "davecramer (@davecramer)" <[email protected]>
2024-11-26 19:44 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2024-11-28 11:14 ` "davecramer (@davecramer)" <[email protected]>
2025-01-10 21:42 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-01-10 22:35 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-01-10 23:02 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-01-10 23:08 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-01-11 01:21 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-15 20:09 ` "davecramer (@davecramer)" <[email protected]>
2025-03-15 20:13 ` "davecramer (@davecramer)" <[email protected]>
2025-03-15 20:16 ` "davecramer (@davecramer)" <[email protected]>
2025-03-15 20:17 ` "davecramer (@davecramer)" <[email protected]>
2025-03-20 23:46 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-20 23:46 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-20 23:46 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-20 23:47 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-21 12:28 ` "davecramer (@davecramer)" <[email protected]>
2025-03-21 16:37 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-21 16:43 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-21 18:45 ` "davecramer (@davecramer)" <[email protected]>
2025-03-21 19:58 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-21 20:00 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-21 20:01 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-03-21 20:27 ` "davecramer (@davecramer)" <[email protected]>
2025-04-03 23:43 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-04-04 12:32 ` "davecramer (@davecramer)" <[email protected]>
2025-04-28 22:45 ` "davecramer (@davecramer)" <[email protected]>
2025-04-29 02:49 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-05-05 21:53 ` "davecramer (@davecramer)" <[email protected]>
2025-05-05 21:55 ` "davecramer (@davecramer)" <[email protected]>
2025-05-05 22:24 ` "davecramer (@davecramer)" <[email protected]>
2025-05-12 18:29 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-05-12 18:29 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-05-12 18:31 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-05-27 01:42 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-06-08 18:05 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-07-10 21:59 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
2025-12-25 20:24 ` "crowmagnumb (@crowmagnumb)" <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox