Fixes duplicated results
This commit is contained in:
+9
-7
@@ -84,12 +84,14 @@ class QueryAssemblerTest {
|
|||||||
"""
|
"""
|
||||||
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT event_tags.event_header_row_id as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_headers.created_at >= "1750889190") AND (event_tags.tag_hash = "2657743813502222172") AND (event_headers.kind = "5") AND (event_headers.pubkey = "7c5eb72a4584fdaaeaa145b25c92ea9917704224951219dbd43acef9e91fb88d")
|
SELECT DISTINCT(event_tags.event_header_row_id) as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_headers.created_at >= "1750889190") AND (event_tags.tag_hash = "2657743813502222172") AND (event_headers.kind = "5") AND (event_headers.pubkey = "7c5eb72a4584fdaaeaa145b25c92ea9917704224951219dbd43acef9e91fb88d")
|
||||||
) AS filtered
|
) AS filtered
|
||||||
ON event_headers.row_id = filtered.row_id
|
ON event_headers.row_id = filtered.row_id
|
||||||
ORDER BY created_at DESC, id
|
ORDER BY created_at DESC, id
|
||||||
├── SEARCH event_tags USING COVERING INDEX query_by_tags_hash (tag_hash=?)
|
├── CO-ROUTINE filtered
|
||||||
├── SEARCH event_headers USING INTEGER PRIMARY KEY (rowid=?)
|
│ ├── SEARCH event_tags USING COVERING INDEX query_by_tags_hash (tag_hash=?)
|
||||||
|
│ └── SEARCH event_headers USING INTEGER PRIMARY KEY (rowid=?)
|
||||||
|
├── SCAN filtered
|
||||||
├── SEARCH event_headers USING INTEGER PRIMARY KEY (rowid=?)
|
├── SEARCH event_headers USING INTEGER PRIMARY KEY (rowid=?)
|
||||||
└── USE TEMP B-TREE FOR ORDER BY
|
└── USE TEMP B-TREE FOR ORDER BY
|
||||||
""".trimIndent(),
|
""".trimIndent(),
|
||||||
@@ -278,7 +280,7 @@ class QueryAssemblerTest {
|
|||||||
"""
|
"""
|
||||||
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT event_tags.event_header_row_id as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE event_tags.tag_hash = "-4551135004136952885" ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
SELECT DISTINCT(event_tags.event_header_row_id) as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE event_tags.tag_hash = "-4551135004136952885" ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
||||||
) AS filtered
|
) AS filtered
|
||||||
ON event_headers.row_id = filtered.row_id
|
ON event_headers.row_id = filtered.row_id
|
||||||
ORDER BY created_at DESC, id
|
ORDER BY created_at DESC, id
|
||||||
@@ -313,7 +315,7 @@ class QueryAssemblerTest {
|
|||||||
"""
|
"""
|
||||||
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT event_tags.event_header_row_id as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_tags.tag_hash = "-4551135004136952885") AND (event_headers.kind = "3") ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
SELECT DISTINCT(event_tags.event_header_row_id) as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_tags.tag_hash = "-4551135004136952885") AND (event_headers.kind = "3") ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
||||||
) AS filtered
|
) AS filtered
|
||||||
ON event_headers.row_id = filtered.row_id
|
ON event_headers.row_id = filtered.row_id
|
||||||
ORDER BY created_at DESC, id
|
ORDER BY created_at DESC, id
|
||||||
@@ -345,7 +347,7 @@ class QueryAssemblerTest {
|
|||||||
"""
|
"""
|
||||||
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT event_tags.event_header_row_id as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_tags.tag_hash = "-4551135004136952885") AND (event_headers.pubkey = "7c5eb72a4584fdaaeaa145b25c92ea9917704224951219dbd43acef9e91fb88d") ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
SELECT DISTINCT(event_tags.event_header_row_id) as row_id FROM event_tags INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_tags.tag_hash = "-4551135004136952885") AND (event_headers.pubkey = "7c5eb72a4584fdaaeaa145b25c92ea9917704224951219dbd43acef9e91fb88d") ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
||||||
) AS filtered
|
) AS filtered
|
||||||
ON event_headers.row_id = filtered.row_id
|
ON event_headers.row_id = filtered.row_id
|
||||||
ORDER BY created_at DESC, id
|
ORDER BY created_at DESC, id
|
||||||
@@ -381,7 +383,7 @@ class QueryAssemblerTest {
|
|||||||
"""
|
"""
|
||||||
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
SELECT id, pubkey, created_at, kind, tags, content, sig FROM event_headers
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT event_tags.event_header_row_id as row_id FROM event_tags INNER JOIN event_tags as event_tagst ON event_tagst.event_header_row_id = event_tags.event_header_row_id INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_tags.tag_hash = "-4551135004136952885") AND (event_tagst.tag_hash = "-6379614208644810021") AND (event_headers.kind = "1") ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
SELECT DISTINCT(event_tags.event_header_row_id) as row_id FROM event_tags INNER JOIN event_tags as event_tagst ON event_tagst.event_header_row_id = event_tags.event_header_row_id INNER JOIN event_headers ON event_headers.row_id = event_tags.event_header_row_id WHERE (event_tags.tag_hash = "-4551135004136952885") AND (event_tagst.tag_hash = "-6379614208644810021") AND (event_headers.kind = "1") ORDER BY event_headers.created_at DESC, event_headers.id ASC LIMIT 30
|
||||||
) AS filtered
|
) AS filtered
|
||||||
ON event_headers.row_id = filtered.row_id
|
ON event_headers.row_id = filtered.row_id
|
||||||
ORDER BY created_at DESC, id
|
ORDER BY created_at DESC, id
|
||||||
|
|||||||
+1
-1
@@ -466,7 +466,7 @@ class EventIndexesModule(
|
|||||||
buildString {
|
buildString {
|
||||||
// always do tags if there are any
|
// always do tags if there are any
|
||||||
if (nonDTags.isNotEmpty()) {
|
if (nonDTags.isNotEmpty()) {
|
||||||
append("SELECT event_tags.event_header_row_id as row_id FROM event_tags ")
|
append("SELECT DISTINCT(event_tags.event_header_row_id) as row_id FROM event_tags ")
|
||||||
|
|
||||||
// it's quite rare to have 2 tags in the filter, but possible
|
// it's quite rare to have 2 tags in the filter, but possible
|
||||||
nonDTags.keys.forEachIndexed { index, tagName ->
|
nonDTags.keys.forEachIndexed { index, tagName ->
|
||||||
|
|||||||
Reference in New Issue
Block a user