2016-12-14 52 views
0

CrateDB是否允许为对象列使用大写或驼峰属性名称?我有这样一个表:CrateDB崩溃中的camelCase列名称与JDBC

create table objecttest(
age integer, 
name string, 
attrs object 
); 

使用INSERT语句:

insert into objecttest (age,name,attrs) values (30,'harry',{address = '123 street', city = 'city', IPaddress = '10.0.0.1'}); 

...在崩溃导致:

cr> select * from objecttest; 
+-----+---------------------------------------------------------------------+--------+ 
| age | attrs                | name | 
+-----+---------------------------------------------------------------------+--------+ 
| 30 | {"address": "123 street", "city": "city", "ipaddress": "10.0.0.1"} | harry | 
+-----+---------------------------------------------------------------------+--------+ 
SELECT 1 row in set (0.005 sec) 

...在CrateDB的JDBC驱动程序导致:

cr> select * from objecttest; 
+-----+---------------------------------------------------------------------+-------+ 
| age | attrs                | name | 
+-----+---------------------------------------------------------------------+-------+ 
| 30 | {"address": "123 street", "city": "city", "ipaddress": "10.0.0.1"} | harry | 
| 30 | {"IPaddress": "10.0.0.1", "address": "123 street", "city": "city"} | harry | 
+-----+---------------------------------------------------------------------+-------+ 
SELECT 2 rows in set (0.004 sec) 

IPaddress is now拼写有所不同。这是一个在crate-jdbc中的错误吗?

回答

1

如果不加引号,CrateDB会将所有列名视为不区分大小写(小写),因此应引用任何列以保留大小写。另一方面,CrateDB的JDBC驱动程序会自动引用列名,这意味着在那里执行的插入语句将具有写在代码中的外壳。崩溃/管理员UI/...发出时,将使用保留外壳:

insert into objecttest (age,name,attrs) values (30,'harry',{address = '123 street', city = 'city', "IPaddress" = '10.0.0.1'}); 

你会得到相同的结果如果与箱子-JDBC插入。

更多关于结构here

干杯!