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
# create table foo (id bigint primary key, name varchar(255));
CREATE TABLE
# insert into foo (id, name) values(1, null);
# update foo set name = 'bar' where id = 1;
UPDATE 1
yugaware=# select * from foo;
id | name
----+-------
1 |
(1 row)
The text was updated successfully, but these errors were encountered:
Summary:
The root cause was an inconsistency between equality and inequality operators
for QLValue. The former was using CQL semantics (null equals null), while
the latter was using SQL semantics (null neither equals nor not-equals
anything -- i.e. would be unknown in a three-valued logic, but we mapped
unknown to false in C++).
The fix is to consistently use CQL semantics for QLValue.
For YSQL the 'query layer' is really the stateless postgres which compares
correctly with SQL semantics.
Later when we pushdown more expressions to be evaluated in DocDB we need to
consider either adding alternative comparators for SQL or using a different
class/protobuf message for YSQL values.
These follow-up tasks are tracked in:
#1138#1141
Test Plan: TestPgRegressFeature.java (yb_feature_update.sql)
Reviewers: neil, robert, neha
Reviewed By: robert, neha
Subscribers: yql
Differential Revision: https://phabricator.dev.yugabyte.com/D6475
The text was updated successfully, but these errors were encountered: