× Heads up!

Aqua Data Studio / nhilam

Follow
IDE for Relational Databases
×
slavakiev reported 2013-08-07T11:58:38Z  · last modified 2013-09-02T16:14:13Z

Program does not add type checking when builds $where


Priority Low
Complexity Unknown
Component MongoSQL
Version 14.0
 
Tested Aqua Data Studio Aqua Data Studio 14.0.0-beta-79 Build #: 33402 on Ubuntu 12.04( Mongo DB 2.4.3)  and Windows XP ( Mongo DB 2.0.9).
 
Program when builds $where statements uses simple equalence "==" instead strict "===" or does not include "typedef" for checking types of the fields and this gives wrong results.
See next scriptset and results:
drop collection jstype
go
insert into jstype(tnum,tname,var) values (1,'Double',1.0)
go
insert into jstype(tnum,tname,var) values (2,'String','1')
go
insert into jstype(tnum,tname,var) values (4,'Array',[1])
go
insert into jstype(tnum,tname,var) values (5,'Binary data',HEXDATA("01"))
go
insert into jstype(tnum,tname,var) values (7,'Object id',ObjectId('123456789012345678901234'))
go
insert into jstype(tnum,tname,var) values (8,'Boolean',true)
go
insert into jstype(tnum,tname,var) values (9,'Date',Date())
go
insert into jstype(tnum,tname,var) values (10,'Null',null)
go
insert into jstype(tnum,tname,var) values (16,'32bit integer',1)
go
insert into jstype(tnum,tname,var) values (17,'Time Stamp',BSONTimeStamp(1,1))
go
insert into jstype(tnum,tname,var) values (255,'MinKey',MinKey())
go
insert into jstype(tnum,tname,var) values (127,'MaxKey',MaxKey())
go
insert into jstype(tnum,tname) values (0,'Absent')
go
select tname,var from jstype where var+1>1
go
--tname          var                      
------------  ------------------------ 
--Double         1                        
--String         1                        
--Array          [ 1 ]                    
--Object id      123456789012345678901234 
--Boolean        true                     
--32bit integer  1                        
--program sends wrong $where 
--(this.var+1>1)
--should be 
--db.jstype.find({$where:"(this.var+1>1) && (typeof this.var=='number')"}) 
 
If more than one field are in the expression then necessary to use strict eqv "===" or  eqv of typedef e.g. && (typeof this.a==typeof this.b)  
                
   
    

Issue #9725

Closed
Fixed
Resolved 2013-08-26T17:56:00Z
 
 
Completion
No due date
Fixed Build ADS 14.0.0-rc-8 (mongo-jdbc 1.3.0)
No time estimate

About AquaClusters Privacy Policy Support Version - 19.0.2-4 AquaFold, Inc Copyright © 2007-2017