immudb icon indicating copy to clipboard operation
immudb copied to clipboard

Update/Insert Timestamp doesn't work with PostgreSQL SQL syntax.

Open Shashwat32 opened this issue 2 years ago • 0 comments

What happened Update/Insert Timestamp doesn't work with PostgreSQL SQL syntax. It throws exception as "org.postgresql.util.PSQLException: ERROR: value is not a timestamp: invalid value provided" That would be the result of incompatibility between SQL syntax in PostgreSQL and immudb - looks like the driver assumes that casts from string to timestamp are implicit.

What you expected to happen PostgreSQL should be able to update/insert timestamp in immudb using SQL syntax.

How to reproduce it (as minimally and precisely as possible)

  1. Create one table in immudb.

CREATE TABLE IF NOT EXISTS users ( username VARCHAR[50], created_at TIMESTAMP, PRIMARY KEY (username) );

  1. Try inserting one row using immudb4j (Java SDK : 0.9.0.6) and PostgreSQL (Version : 42.2.25) import java.sql.Timestamp;

private final String INSERT_QUERY_USERS = "INSERT INTO USERS (username,created_at) VALUES (?,?)"; String urlForConnection = "jdbc:postgresql://"+url+":"+port+"/"+databaseName+"?sslmode=allow&preferQueryMode=simple"; var connection = DriverManager.getConnection(urlForConnection,"immudb", "immudb"); var client = connection .getClient(); PreparedStatement pstmt = client.prepareStatement(INSERT_QUERY_USERS); pstmt.setString(1,"TestUserName"); pstmt.setTimestamp(2, new Timestamp(System.currentTimeMillis())); pstmt.execute();

Environment

# run immudb 1.2.2 and copy/paste the output here
 ./immudb -d

immudb 2022/03/18 09:56:25 INFO: SQL Engine ready for database 'defaultdb' {replica = false} immudb 2022/03/18 09:56:25 INFO: pgsl server is running at port 5432 immudb 2022/03/18 09:56:25 INFO: Webconsole enabled: 0.0.0.0:8080 immudb 2022/03/18 09:56:25 INFO: Web API server enabled on 0.0.0.0:8080/api (http) You can now use immuadmin and immuclient CLIs to login with the immudb superadmin user and start using immudb. immudb has been started with PID 211 shashwat32@Eternal007:~$ immudb 2022/03/18 10:23:15 ERROR: unable to write error on wire: write tcp 172.19.66.153:5432->172.19.64.1:53826: write: broken pipe immudb 2022/03/18 10:23:15 ERROR: unable to complete error handling: write tcp 172.19.66.153:5432->172.19.64.1:53826: write: broken pipe immudb 2022/03/18 10:23:15 WARNING: connection is closed immudb 2022/03/18 10:28:46 INFO: 1 transaction/s to be indexed at 'data/defaultdb' immudb 2022/03/18 10:34:31 ERROR: unable to write error on wire: write tcp 172.19.66.153:5432->172.19.64.1:54138: write: broken pipe immudb 2022/03/18 10:34:31 ERROR: unable to complete error handling: write tcp 172.19.66.153:5432->172.19.64.1:54138: write: broken pipe immudb 2022/03/18 10:34:31 WARNING: connection is closed

Additional info (any other context about the problem) Tried with all kinds of Timestamps but it doesn't work.

Screenshot 2022-03-18 150640

Shashwat32 avatar Mar 18 '22 09:03 Shashwat32