Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Postgres driver: error on creating non-string properties #691

Closed
docbacardi opened this issue Dec 20, 2022 · 7 comments
Closed

Postgres driver: error on creating non-string properties #691

docbacardi opened this issue Dec 20, 2022 · 7 comments
Assignees
Labels
bug Something isn't working fixed
Milestone

Comments

@docbacardi
Copy link
Contributor

ArcadeDB Version: 22.12.1-SNAPSHOT

JDK Version: openjdk version "11.0.17" 2022-10-18

OS: Ubuntu 22.04.1 LTS

Expected behavior

I have a vertex type with several properties:

chicken@asteroid:~$ psql --host=localhost testdatabase root
Password for user root: 
psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1), server 10.5)
Type "help" for help.

testdatabase=> CREATE VERTEX TYPE v;
     operation      | typeName 
--------------------+----------
 create vertex type | v
(1 row)

INSERT 0 1
testdatabase=> CREATE PROPERTY v.s STRING;
    operation    | typeName | propertyName 
-----------------+----------+--------------
 create property | v        | s
(1 row)

testdatabase=> CREATE PROPERTY v.i INTEGER;
    operation    | typeName | propertyName 
-----------------+----------+--------------
 create property | v        | i
(1 row)

testdatabase=> CREATE PROPERTY v.b BOOLEAN;
    operation    | typeName | propertyName 
-----------------+----------+--------------
 create property | v        | b
(1 row)

testdatabase=> CREATE PROPERTY v.sh SHORT;
    operation    | typeName | propertyName 
-----------------+----------+--------------
 create property | v        | sh
(1 row)

testdatabase=> CREATE PROPERTY v.d DOUBLE;
    operation    | typeName | propertyName 
-----------------+----------+--------------
 create property | v        | d
(1 row)

testdatabase=> CREATE PROPERTY v.da DATETIME;
    operation    | typeName | propertyName 
-----------------+----------+--------------
 create property | v        | da
(1 row)

A new vertex is created and selected:

testdatabase=> CREATE VERTEX v SET s="abc", i=1, b=true, sh=2, d=3.5, da="2022-12-20 18:00";
  s  | i |  b   | sh |   d   | da 
-----+---+------+----+-------+----
 abc |   | \x01 |    | @\x0C | 
(1 row)

INSERT 0 1
testdatabase=> {gremlin} g.V().hasLabel('v');
  s  | i |  b   | sh |   d   | da 
-----+---+------+----+-------+----
 abc |   | \x01 |    | @\x0C | 
(1 row)

Please note the strange response for both commands. The values for the properties i and sh are empty. The boolean b looks like binary data. The double d does not look very much like a number, and the date-time da is empty.
The studio shows the correct values for all fields, including "true" for the boolean.

@docbacardi docbacardi changed the title Empty values for number type properties. Creating non-string properties. Dec 20, 2022
@lvca
Copy link
Contributor

lvca commented Dec 20, 2022

Ok, if Studio works, it must be an issue with the console. I'm going to write a test case for this.

@lvca lvca self-assigned this Dec 20, 2022
@lvca lvca added the bug Something isn't working label Dec 20, 2022
@lvca lvca added this to the 22.12.1 milestone Dec 20, 2022
@lvca
Copy link
Contributor

lvca commented Dec 20, 2022

Just written a test case and the return from the command is:

ArcadeDB Console v.22.12.1-SNAPSHOT - Copyrights (c) 2021 Arcade Data Ltd (https://arcadedb.com)
Database already connected, to connect to a different database close the current one first
+---------+------------------+
|NAME     |VALUE             |
+---------+------------------+
|operation|create vertex type|
|typeName |v                 |
+---------+------------------+
Command executed in 197ms
+------------+---------------+
|NAME        |VALUE          |
+------------+---------------+
|operation   |create property|
|typeName    |v              |
|propertyName|s              |
+------------+---------------+
Command executed in 9ms
+------------+---------------+
|NAME        |VALUE          |
+------------+---------------+
|operation   |create property|
|typeName    |v              |
|propertyName|i              |
+------------+---------------+
Command executed in 2ms
+------------+---------------+
|NAME        |VALUE          |
+------------+---------------+
|operation   |create property|
|typeName    |v              |
|propertyName|b              |
+------------+---------------+
Command executed in 3ms
+------------+---------------+
|NAME        |VALUE          |
+------------+---------------+
|operation   |create property|
|typeName    |v              |
|propertyName|sh             |
+------------+---------------+
Command executed in 3ms
+------------+---------------+
|NAME        |VALUE          |
+------------+---------------+
|operation   |create property|
|typeName    |v              |
|propertyName|d              |
+------------+---------------+
Command executed in 3ms
+------------+---------------+
|NAME        |VALUE          |
+------------+---------------+
|operation   |create property|
|typeName    |v              |
|propertyName|da             |
+------------+---------------+
Command executed in 3ms
VERTEX @type:v @rid:#1:0
+----+-----------------------+
|NAME|VALUE                  |
+----+-----------------------+
|s   |abc                    |
|i   |1                      |
|b   |true                   |
|sh  |2                      |
|d   |3.5                    |
|da  |2022-12-20 00:00:00.000|
+----+-----------------------+
Command executed in 23ms

lvca added a commit that referenced this issue Dec 20, 2022
@docbacardi
Copy link
Contributor Author

Indeed, looks like it only happens in postgresql.

@lvca
Copy link
Contributor

lvca commented Dec 22, 2022

I was able to reproduce the problem from postgres console. Working on it.

@lvca
Copy link
Contributor

lvca commented Dec 22, 2022

Ok, the commands are executed correctly, but the output is serialized wrongly. I tried with a small fix that serializes by using the stringify protocol and works (everything but the FLOAT number for some reason). I need to dig a little bit more into this. Unfortunately the documentation on how to serialize types in Postgres Wire protocol is scarce/non-existent :-(

lvca added a commit that referenced this issue Dec 22, 2022
@lvca
Copy link
Contributor

lvca commented Dec 22, 2022

Fixed. Changed serialization to text.

@lvca lvca closed this as completed Dec 22, 2022
@lvca lvca added the fixed label Dec 22, 2022
@docbacardi
Copy link
Contributor Author

All results look good now, including floats. This is just perfect.

@lvca lvca changed the title Creating non-string properties. Postgres driver: error on creating non-string properties Dec 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fixed
Projects
None yet
Development

No branches or pull requests

2 participants