Example Query:
SELECT conv.conv_messages
[0:1] AS conv_messages
FROM spots
AS conv
WHERE conv.type = ‘conversation’
AND conv.conv_id = ‘2_1571120142’
AND ANY msg IN conv.conv_messages
SATISFIES (ANY msgr IN msg.msg_recipients
SATISFIES (msgr.user_id = 6)
END) END
The correct response of the above should be:
[
{
“conv_messages”: [
{
“msg_datetime_created”: “2019-10-15 06:15:42”,
“msg_id”: “conversation_2_1571120142_2_1571120142”,
“msg_owner_id”: 2,
“msg_recipients”: [
{
“msg_is_read”: false,
“user_id”: 169
},
{
“msg_is_read”: false,
“user_id”: 524
},
{
“msg_is_read”: true,
“user_id”: 322
},
{
“msg_is_read”: false,
“user_id”: 298
},
{
“msg_is_read”: false,
“user_id”: 230
},
{
“msg_is_read”: false,
“user_id”: 758
},
{
“msg_is_read”: true,
“user_id”: 241
},
{
“msg_is_read”: true,
“user_id”: 5
},
{
“msg_is_read”: false,
“user_id”: 6
},
{
“msg_is_read”: false,
“user_id”: 7
},
{
“msg_is_read”: true,
“user_id”: 9
},
{
“msg_is_read”: true,
“user_id”: 11
},
{
“msg_is_read”: false,
“user_id”: 16
},
{
“msg_is_read”: true,
“user_id”: 27
},
{
“msg_is_read”: true,
“user_id”: 29
},
{
“msg_is_read”: true,
“user_id”: 35
},
{
“msg_is_read”: true,
“user_id”: 39
},
{
“msg_is_read”: false,
“user_id”: 49
},
{
“msg_is_read”: false,
“user_id”: 51
},
{
“msg_is_read”: true,
“user_id”: 63
},
{
“msg_is_read”: false,
“user_id”: 64
},
{
“msg_is_read”: true,
“user_id”: 95
},
{
“msg_is_read”: true,
“user_id”: 131
},
{
“msg_is_read”: false,
“user_id”: 235
},
{
“msg_is_read”: true,
“user_id”: 247
},
{
“msg_is_read”: false,
“user_id”: 251
},
{
“msg_is_read”: true,
“user_id”: 254
},
{
“msg_is_read”: true,
“user_id”: 257
},
{
“msg_is_read”: true,
“user_id”: 265
},
{
“msg_is_read”: true,
“user_id”: 271
},
{
“msg_is_read”: true,
“user_id”: 279
},
{
“msg_is_read”: true,
“user_id”: 288
},
{
“msg_is_read”: true,
“user_id”: 290
},
{
“msg_is_read”: true,
“user_id”: 304
},
{
“msg_is_read”: true,
“user_id”: 306
},
{
“msg_is_read”: true,
“user_id”: 314
},
{
“msg_is_read”: true,
“user_id”: 316
},
{
“msg_is_read”: true,
“user_id”: 319
},
{
“msg_is_read”: false,
“user_id”: 320
},
{
“msg_is_read”: true,
“user_id”: 321
},
{
“msg_is_read”: true,
“user_id”: 1948
},
{
“msg_is_read”: true,
“user_id”: 2503
},
{
“msg_is_read”: true,
“user_id”: 2525
},
{
“msg_is_read”: true,
“user_id”: 2537
},
{
“msg_is_read”: true,
“user_id”: 3026
},
{
“msg_is_read”: false,
“user_id”: 3126
},
{
“msg_is_read”: true,
“user_id”: 3201
},
{
“msg_is_read”: true,
“user_id”: 3360
},
{
“msg_is_read”: true,
“user_id”: 3361
},
{
“msg_is_read”: true,
“user_id”: 3362
},
{
“msg_is_read”: true,
“user_id”: 3364
},
{
“msg_is_read”: false,
“user_id”: 3389
},
{
“msg_is_read”: true,
“user_id”: 3834
},
{
“msg_is_read”: true,
“user_id”: 4191
},
{
“msg_is_read”: true,
“user_id”: 6223
},
{
“msg_is_read”: true,
“user_id”: 6224
},
{
“msg_is_read”: true,
“user_id”: 6229
},
{
“msg_is_read”: true,
“user_id”: 6230
},
{
“msg_is_read”: true,
“user_id”: 6231
},
{
“msg_is_read”: true,
“user_id”: 6233
},
{
“msg_is_read”: true,
“user_id”: 6234
},
{
“msg_is_read”: false,
“user_id”: 6235
},
{
“msg_is_read”: true,
“user_id”: 6242
},
{
“msg_is_read”: true,
“user_id”: 6243
},
{
“msg_is_read”: true,
“user_id”: 6245
},
{
“msg_is_read”: true,
“user_id”: 6265
},
{
“msg_is_read”: false,
“user_id”: 6278
},
{
“msg_is_read”: false,
“user_id”: 6279
},
{
“msg_is_read”: false,
“user_id”: 6280
},
{
“msg_is_read”: false,
“user_id”: 6281
},
{
“msg_is_read”: false,
“user_id”: 6285
},
{
“msg_is_read”: true,
“user_id”: 6289
},
{
“msg_is_read”: true,
“user_id”: 6290
},
{
“msg_is_read”: false,
“user_id”: 6291
},
{
“msg_is_read”: false,
“user_id”: 6294
},
{
“msg_is_read”: false,
“user_id”: 6300
},
{
“msg_is_read”: false,
“user_id”: 6309
},
{
“msg_is_read”: false,
“user_id”: 6310
},
{
“msg_is_read”: false,
“user_id”: 6317
},
{
“msg_is_read”: true,
“user_id”: 6359
},
{
“msg_is_read”: true,
“user_id”: 6360
},
{
“msg_is_read”: false,
“user_id”: 6373
},
{
“msg_is_read”: true,
“user_id”: 6402
},
{
“msg_is_read”: true,
“user_id”: 6403
},
{
“msg_is_read”: false,
“user_id”: 6409
},
{
“msg_is_read”: false,
“user_id”: 6416
},
{
“msg_is_read”: false,
“user_id”: 6417
},
{
“msg_is_read”: true,
“user_id”: 6445
},
{
“msg_is_read”: false,
“user_id”: 6588
},
{
“msg_is_read”: false,
“user_id”: 6600
},
{
“msg_is_read”: false,
“user_id”: 6602
},
{
“msg_is_read”: true,
“user_id”: 6605
},
{
“msg_is_read”: false,
“user_id”: 6616
},
{
“msg_is_read”: false,
“user_id”: 6637
},
{
“msg_is_read”: false,
“user_id”: 6649
},
{
“msg_is_read”: false,
“user_id”: 6737
},
{
“msg_is_read”: false,
“user_id”: 6769
},
{
“msg_is_read”: false,
“user_id”: 6785
},
{
“msg_is_read”: false,
“user_id”: 6799
},
{
“msg_is_read”: false,
“user_id”: 6817
},
{
“msg_is_read”: false,
“user_id”: 6820
},
{
“msg_is_read”: false,
“user_id”: 6821
},
{
“msg_is_read”: false,
“user_id”: 6822
},
{
“msg_is_read”: false,
“user_id”: 6851
},
{
“msg_is_read”: false,
“user_id”: 6863
},
{
“msg_is_read”: false,
“user_id”: 6865
},
{
“msg_is_read”: false,
“user_id”: 6869
},
{
“msg_is_read”: false,
“user_id”: 6870
},
{
“msg_is_read”: false,
“user_id”: 6871
},
{
“msg_is_read”: false,
“user_id”: 6880
},
{
“msg_is_read”: false,
“user_id”: 6881
},
{
“msg_is_read”: false,
“user_id”: 6883
},
{
“msg_is_read”: false,
“user_id”: 6884
},
{
“msg_is_read”: false,
“user_id”: 6952
},
{
“msg_is_read”: false,
“user_id”: 6954
},
{
“msg_is_read”: false,
“user_id”: 6966
},
{
“msg_is_read”: false,
“user_id”: 6967
},
{
“msg_is_read”: false,
“user_id”: 6968
},
{
“msg_is_read”: false,
“user_id”: 6969
},
{
“msg_is_read”: false,
“user_id”: 6992
},
{
“msg_is_read”: false,
“user_id”: 6999
},
{
“msg_is_read”: false,
“user_id”: 7000
},
{
“msg_is_read”: false,
“user_id”: 7001
},
{
“msg_is_read”: false,
“user_id”: 7002
},
{
“msg_is_read”: false,
“user_id”: 7003
},
{
“msg_is_read”: false,
“user_id”: 7005
},
{
“msg_is_read”: false,
“user_id”: 7006
},
{
“msg_is_read”: false,
“user_id”: 7052
},
{
“msg_is_read”: false,
“user_id”: 7053
},
{
“msg_is_read”: false,
“user_id”: 7054
},
{
“msg_is_read”: false,
“user_id”: 7056
},
{
“msg_is_read”: false,
“user_id”: 7058
},
{
“msg_is_read”: false,
“user_id”: 7059
},
{
“msg_is_read”: false,
“user_id”: 7060
},
{
“msg_is_read”: false,
“user_id”: 7061
},
{
“msg_is_read”: false,
“user_id”: 7077
},
{
“msg_is_read”: false,
“user_id”: 7096
},
{
“msg_is_read”: false,
“user_id”: 7099
},
{
“msg_is_read”: false,
“user_id”: 7100
},
{
“msg_is_read”: false,
“user_id”: 7101
},
{
“msg_is_read”: false,
“user_id”: 7104
},
{
“msg_is_read”: false,
“user_id”: 7107
},
{
“msg_is_read”: false,
“user_id”: 7109
},
{
“msg_is_read”: false,
“user_id”: 7110
},
{
“msg_is_read”: false,
“user_id”: 7111
},
{
“msg_is_read”: false,
“user_id”: 7113
},
{
“msg_is_read”: false,
“user_id”: 7114
},
{
“msg_is_read”: false,
“user_id”: 7115
},
{
“msg_is_read”: false,
“user_id”: 7116
},
{
“msg_is_read”: false,
“user_id”: 7117
},
{
“msg_is_read”: true,
“user_id”: 7118
},
{
“msg_is_read”: true,
“user_id”: 7119
},
{
“msg_is_read”: false,
“user_id”: 7134
},
{
“msg_is_read”: false,
“user_id”: 7135
},
{
“msg_is_read”: false,
“user_id”: 7146
},
{
“msg_is_read”: false,
“user_id”: 7147
},
{
“msg_is_read”: false,
“user_id”: 7148
},
{
“msg_is_read”: false,
“user_id”: 7149
},
{
“msg_is_read”: false,
“user_id”: 7164
},
{
“msg_is_read”: true,
“user_id”: 7166
},
{
“msg_is_read”: false,
“user_id”: 7181
},
{
“msg_is_read”: false,
“user_id”: 7183
},
{
“msg_is_read”: true,
“user_id”: 7184
},
{
“msg_is_read”: false,
“user_id”: 7185
},
{
“msg_is_read”: false,
“user_id”: 7186
},
{
“msg_is_read”: true,
“user_id”: 7187
},
{
“msg_is_read”: false,
“user_id”: 7188
},
{
“msg_is_read”: false,
“user_id”: 7191
},
{
“msg_is_read”: false,
“user_id”: 7197
},
{
“msg_is_read”: false,
“user_id”: 7198
},
{
“msg_is_read”: false,
“user_id”: 7200
},
{
“msg_is_read”: false,
“user_id”: 7201
},
{
“msg_is_read”: false,
“user_id”: 7203
},
{
“msg_is_read”: false,
“user_id”: 7224
},
{
“msg_is_read”: false,
“user_id”: 7229
},
{
“msg_is_read”: false,
“user_id”: 7230
},
{
“msg_is_read”: false,
“user_id”: 7251
},
{
“msg_is_read”: false,
“user_id”: 7289
},
{
“msg_is_read”: false,
“user_id”: 7307
},
{
“msg_is_read”: false,
“user_id”: 7308
},
{
“msg_is_read”: false,
“user_id”: 7309
},
{
“msg_is_read”: false,
“user_id”: 7310
},
{
“msg_is_read”: false,
“user_id”: 7326
},
{
“msg_is_read”: false,
“user_id”: 7398
},
{
“msg_is_read”: false,
“user_id”: 7410
},
{
“msg_is_read”: false,
“user_id”: 7439
}
],
“msg_text”: “AT LEAST 1170”
}
]
}
]
When the following INDEX is created:
CREATE INDEX idx_conversations_of_user_inbox
ON spots
((distinct (array (
distinct (array (
msgr
.user_id
) for msgr
in (msg
.msg_recipients
) end)
) for msg
in conv_messages
end)))
WHERE (type
= “conversation”)
The query does respond with empty result-set!!!
This is the EXPLAIN output:
{
“plan”: {
“#operator”: “Sequence”,
“~children”: [
{
“#operator”: “DistinctScan”,
“scan”: {
“#operator”: “IndexScan3”,
“as”: “conv”,
“index”: “idx_conversations_of_user_inbox”,
“index_id”: “36dc9bd5aa5bf049”,
“index_projection”: {
“primary_key”: true
},
“keyspace”: “spots”,
“namespace”: “default”,
“spans”: [
{
“range”: [
{
“high”: “6”,
“inclusion”: 3,
“low”: “6”
}
]
}
],
“using”: “gsi”
}
},
{
“#operator”: “Fetch”,
“as”: “conv”,
“keyspace”: “spots”,
“namespace”: “default”
},
{
“#operator”: “Parallel”,
“~child”: {
“#operator”: “Sequence”,
“~children”: [
{
“#operator”: “Filter”,
“condition”: “((((conv
.type
) = “conversation”) and ((conv
.conv_id
) = “2_1571120142”)) and any msg
in (conv
.conv_messages
) satisfies any msgr
in (msg
.msg_recipients
) satisfies ((msgr
.user_id
) = 6) end end)”
},
{
“#operator”: “InitialProject”,
“result_terms”: [
{
“as”: “conv_messages”,
“expr”: “((conv
.conv_messages
)[0 : 1])”
}
]
},
{
“#operator”: “FinalProject”
}
]
}
}
]
},
“text”: “SELECT conv.conv_messages
[0:1] AS conv_messages
\nFROM spots
AS conv \nWHERE conv.type = ‘conversation’ \nAND conv.conv_id = ‘2_1571120142’\nAND ANY msg IN conv.conv_messages \n SATISFIES (ANY msgr IN msg.msg_recipients \n SATISFIES (msgr.user_id = 6)\n END) END”
}