fiatjaf / relayer

A Nostr relay server framework.
The Unlicense
302 stars 84 forks source link

Queries with multiple e tags return no results on sqlite #47

Open bndw opened 1 year ago

bndw commented 1 year ago

Single e tag works as expected

nostcat ws://localhost:9000
["REQ","RAND",{"kinds":[1],"#e":["8b1013c2d137bab5a7026e5adc65dcd641025c1a8ae2b7ecdec848cca44f1297"]}

Two values returns nothing:

nostcat ws://localhost:9000
["REQ","RAND",{"kinds":[1],"#e":["8b1013c2d137bab5a7026e5adc65dcd641025c1a8ae2b7ecdec848cca44f1297","e32f75bfce9513bab7c7e82b9a61fd56f80f68946a9d0a384f7f17989bd91f13"]}]

I suspect this has to do with the LIKE query generation. I will be working on a fix but if you can get it in quicker I'd gladly use that 😅

fiatjaf commented 1 year ago

The best fix would be to have a separate table for the tags to be queried.

What are you building? If you just want a simple sqlite-based relay for testing in the meantime I think you should probably use https://github.com/scsibug/nostr-rs-relay.

bndw commented 1 year ago

https://www.stemstr.app/

The backend is a relay + a couple endpoints for streaming stuff. I liked the idea of relayer because I can effectively embed the relay in the api and have hooks into the various relay lifecycles. Do you know of any other relay frameworks in Go?

fiatjaf commented 1 year ago

No, I don't, I don't know of any other relay frameworks in any language except for this one!

Wow, stemstr.app is looking great!, but hey, if that is your use case you should use the Postgres backend.

bndw commented 1 year ago

Thanks. I was planning to swap to the Postgres backend, I guess the time has come 😂

bndw commented 1 year ago

I was able to reproduce this problem using the Postgres backend.

fiatjaf commented 1 year ago

No way.

fiatjaf commented 1 year ago

Well, I guess we should fix it now then.

bndw commented 1 year ago

I apologize, after testing the Postgres backend again this morning I'm able to query by multiple #e tags. Too much debugging yesterday, sorry for the false alarm!

Almost certain this is a real issue in the sqlite backend.