0

CrateDB では、オブジェクト列に大文字またはキャメル ケースの属性名を使用できますか? 次のようなテーブルがあります。

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

挿入ステートメントの使用:

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 のスペルが変更されました。これは crate-jdbc のバグですか?

4

1 に答える 1

1

引用符がない場合、CrateDB はすべての列名を大文字と小文字を区別しない (小文字) として扱うため、大文字と小文字を区別するために列を引用する必要があります。一方、CrateDB の JDBC ドライバーは、列名を自動的に引用します。つまり、そこで実行される挿入ステートメントは、コードに書かれているとおりに大文字と小文字が区別されます。クラッシュ/管理 UI/... 発行時に大文字と小文字を保持します:

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

crate-jdbc で挿入した場合と同じ結果が得られます。

構造の詳細はこちら

乾杯!

于 2016-12-14T11:32:01.140 に答える