Обсуждение: json(b) equality rules

Поиск
Список
Период
Сортировка

json(b) equality rules

От
Oleg Bartunov
Дата:
Hi there,

I'm wondering if we should follow all js equility rules as
nicely visualized in
http://strilanc.com/visualization/2014/03/27/Better-JS-Equality-Table.html

Oleg



Re: json(b) equality rules

От
Oleg Bartunov
Дата:
Sure, we don't follow. I mean should we add to documentation
such matrices.

Oleg

On Thu, Apr 3, 2014 at 11:32 AM, Oleg Bartunov <obartunov@gmail.com> wrote:
> Hi there,
>
> I'm wondering if we should follow all js equility rules as
> nicely visualized in
> http://strilanc.com/visualization/2014/03/27/Better-JS-Equality-Table.html
>
> Oleg



Re: json(b) equality rules

От
Yeb Havinga
Дата:
On 2014-04-03 09:40, Oleg Bartunov wrote:
> Sure, we don't follow. I mean should we add to documentation
> such matrices.
>
> Oleg
>
> On Thu, Apr 3, 2014 at 11:32 AM, Oleg Bartunov <obartunov@gmail.com> wrote:
>> Hi there,
>>
>> I'm wondering if we should follow all js equility rules as
>> nicely visualized in
>> http://strilanc.com/visualization/2014/03/27/Better-JS-Equality-Table.html
>>
>> Oleg


+1

I was a bit curious what the result would be. A quick inspection of the 
query results below gave the impression that the matrix would probably 
show a diagonal line. Even though the table is not necessary as a 
reference to strange equality rules, a table of equality showing a 
diagonal will be easy to remember.

regards,
Yeb

drop table testjsonb;
create table testjsonb(a jsonb);
insert into testjsonb (a) values ('true');
insert into testjsonb (a) values ('false');
insert into testjsonb (a) values ('1');
insert into testjsonb (a) values ('0');
insert into testjsonb (a) values ('-1');
insert into testjsonb (a) values ('"true"');
insert into testjsonb (a) values ('"false"');
insert into testjsonb (a) values ('"1"');
insert into testjsonb (a) values ('"0"');
insert into testjsonb (a) values ('""');
insert into testjsonb (a) values ('null');
insert into testjsonb (a) values ('undefined');
insert into testjsonb (a) values ('Infinity');
insert into testjsonb (a) values ('-Infinity');
insert into testjsonb (a) values ('[]');
insert into testjsonb (a) values ('{}');
insert into testjsonb (a) values ('[{}]');
insert into testjsonb (a) values ('[0]');
insert into testjsonb (a) values ('[1]');
insert into testjsonb (a) values ('NaN');

select  a.a, b.a, a.a = b.a
from    testjsonb a, testjsonb b




Re: json(b) equality rules

От
Oleg Bartunov
Дата:
Well, we don't supported Infinity and NaN in json(b), as well as Json
standard :)
Now we need a script, which generated nice html table.

On Thu, Apr 3, 2014 at 12:40 PM, Yeb Havinga <yebhavinga@gmail.com> wrote:
> On 2014-04-03 09:40, Oleg Bartunov wrote:
>>
>> Sure, we don't follow. I mean should we add to documentation
>> such matrices.
>>
>> Oleg
>>
>> On Thu, Apr 3, 2014 at 11:32 AM, Oleg Bartunov <obartunov@gmail.com>
>> wrote:
>>>
>>> Hi there,
>>>
>>> I'm wondering if we should follow all js equility rules as
>>> nicely visualized in
>>>
>>> http://strilanc.com/visualization/2014/03/27/Better-JS-Equality-Table.html
>>>
>>> Oleg
>
>
>
> +1
>
> I was a bit curious what the result would be. A quick inspection of the
> query results below gave the impression that the matrix would probably show
> a diagonal line. Even though the table is not necessary as a reference to
> strange equality rules, a table of equality showing a diagonal will be easy
> to remember.
>
> regards,
> Yeb
>
> drop table testjsonb;
> create table testjsonb(a jsonb);
> insert into testjsonb (a) values ('true');
> insert into testjsonb (a) values ('false');
> insert into testjsonb (a) values ('1');
> insert into testjsonb (a) values ('0');
> insert into testjsonb (a) values ('-1');
> insert into testjsonb (a) values ('"true"');
> insert into testjsonb (a) values ('"false"');
> insert into testjsonb (a) values ('"1"');
> insert into testjsonb (a) values ('"0"');
> insert into testjsonb (a) values ('""');
> insert into testjsonb (a) values ('null');
> insert into testjsonb (a) values ('undefined');
> insert into testjsonb (a) values ('Infinity');
> insert into testjsonb (a) values ('-Infinity');
> insert into testjsonb (a) values ('[]');
> insert into testjsonb (a) values ('{}');
> insert into testjsonb (a) values ('[{}]');
> insert into testjsonb (a) values ('[0]');
> insert into testjsonb (a) values ('[1]');
> insert into testjsonb (a) values ('NaN');
>
> select  a.a, b.a, a.a = b.a
> from    testjsonb a, testjsonb b
>



Re: json(b) equality rules

От
Andrew Dunstan
Дата:
On 04/03/2014 05:02 AM, Oleg Bartunov wrote:
> Well, we don't supported Infinity and NaN in json(b), as well as Json
> standard :)
> Now we need a script, which generated nice html table.

(Oleg, please try not to top-post.)

I don't think we should follow these rules at all. Json is not 
Javascript, and these are Javascript rules, not Json rules. I'm entirely 
opposed to treating 0, "0", false, and [0] as equal. The equality rule 
we actually have for jsonb is the correct one, I believe.

cheers

andrew






Re: json(b) equality rules

От
Hannu Krosing
Дата:
On 04/03/2014 04:32 AM, Oleg Bartunov wrote:
> Hi there,
>
> I'm wondering if we should follow all js equility rules as
> nicely visualized in
> http://strilanc.com/visualization/2014/03/27/Better-JS-Equality-Table.html
Probably not as JSON is general interchange format.

If somebody wants JavaScript rules, they can use pl/v8

Any equality operations specific for JSON should be related
to array and object/dictionary equality and not data
store inside JSON


Cheers
Hannu



Re: json(b) equality rules

От
Peter Geoghegan
Дата:
On Thu, Apr 3, 2014 at 7:43 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
> I don't think we should follow these rules at all. Json is not Javascript,
> and these are Javascript rules, not Json rules. I'm entirely opposed to
> treating 0, "0", false, and [0] as equal. The equality rule we actually have
> for jsonb is the correct one, I believe.

+1


-- 
Peter Geoghegan