Cassandra не вставляет null
, когда вы опускаете данные для указанного столбца c. null
возвращается, когда вы читаете данные, а данные отсутствуют. Лучше всего проверить, как данные лежат на диске, используя sstabledump
. Например, для моих данных:
cqlsh:test> select * from test.st1;
id | c1 | s1 | v1
----+------+----+------
10 | null | 10 | null
1 | 1 | 2 | 1
1 | 2 | 2 | 1
2 | 10 | 3 | null
(4 rows)
для последней строки я вижу, что у меня нет фактических данных, потому что cells
пусто:
{
"partition" : {
"key" : [ "2" ],
"position" : 97
},
"rows" : [
{
"type" : "static_block",
"position" : 144,
"cells" : [
{ "name" : "s1", "value" : 3, "tstamp" : "2019-04-12T14:33:47.198445Z" }
]
},
{
"type" : "row",
"position" : 144,
"clustering" : [ 10 ],
"liveness_info" : { "tstamp" : "2019-04-29T12:49:31.450239Z" },
"cells" : [ ]
}
]
}
, но если я вставить null
явно:
cqlsh:test> insert into test.st1(id, s1, c1, v1) values (3, 10, 3, null);
, тогда я увижу его в файле данных как надгробие внутри cells
:
{
"partition" : {
"key" : [ "3" ],
"position" : 0
},
"rows" : [
{
"type" : "static_block",
"position" : 39,
"cells" : [
{ "name" : "s1", "value" : 10, "tstamp" : "2020-07-09T09:19:39.751467Z" }
]
},
{
"type" : "row",
"position" : 39,
"clustering" : [ 3 ],
"liveness_info" : { "tstamp" : "2020-07-09T09:19:39.751467Z" },
"cells" : [
{ "name" : "v1", "deletion_info" : { "local_delete_time" : "2020-07-09T09:19:39Z" }
}
]
}
]
}