You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Seems that almost all model classes implement Serializable allowing to use Java Serialization for deep clones. However, WithItem doesn't implement Serializable leading to failures on serialization of a PlainSelect:
java.io.NotSerializableException: net.sf.jsqlparser.statement.select.WithItem
at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1187)
at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350)
at java.base/java.util.ArrayList.writeObject(ArrayList.java:866)
at java.base/jdk.internal.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1070)
at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516)
at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572)
at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529)
at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350)
I haven't checked any other new types whether these are serializable or not.
Reproducer:
StringsetQuery = "with sample_data(day, value) as (values ((0, 13), (1, 12), (2, 15), (3, 4), (4, 8), (5, 16))), test2 as (values (1,2,3)) \n"
+ "select day, value from sample_data as a";
CCJSqlParserparser = CCJSqlParserUtil.newParser(setQuery);
PlainSelectselect = (PlainSelect) parser.withAllowComplexParsing(true).Statement();
newObjectOutputStream(newByteArrayOutputStream()).writeObject(select);
The text was updated successfully, but these errors were encountered:
Thank you for reports.
This one is weird because Serializable should have been inherited from Statement. I just implemented this interface explicitly now and tested in successfully. Cheers
Seems that almost all model classes implement
Serializable
allowing to use Java Serialization for deep clones. However,WithItem
doesn't implementSerializable
leading to failures on serialization of aPlainSelect
:I haven't checked any other new types whether these are serializable or not.
Reproducer:
The text was updated successfully, but these errors were encountered: