Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@mzgreen
Copy link
Contributor

@mzgreen mzgreen commented Jul 10, 2022

Proposed Changes

This change adds support for large SQLite queries. Large queries are queries with more than 999 host parameters.

Prior to this change, if someone created a query like:

@Query("DELETE * FROM user WHERE id IN (:ids)")
fun delete(ids: List<Int>)

and invoked this function passing a list larger than 999 items, the library would throw a SQLiteException.

The implementation details and codegen changes are documented in the design doc: https://docs.google.com/document/d/1tQPjWLmBS55Cu-1lxa3Nn-eUaOCT6HCnftsmOo_NEfo/edit?usp=sharing

Limitations

The solution supports everything except:

  • @RawQuery - it's not possible to support raw queries, because the implemented solution relies on query parsing which happens during compilation while raw queries are executed at runtime.
  • Cursor returning dao methods - The implemented solution uses temp tables which have to be closed as soon as the dao method finishes execution. Cursor is lazy, so the underlying query is executed when the Cursor is accessed for the first time at which point the temp table probably no longer exists.
  • Paging - it may be possible to support it, but I don't have enough experience with Paging to tell and the change got quite big already so I decided to skip this part for now.

Testing

Test: Added new large query unit tests tests and a benchmark test

Issues Fixed

Fixes: b/73634057

RelNote: Room now supports queries with more than 999 host parameters.

@mzgreen mzgreen force-pushed the support_large_queries branch from a0fe1b0 to deacae3 Compare July 10, 2022 12:11
@mzgreen
Copy link
Contributor Author

mzgreen commented Jul 12, 2022

Not sure why FTL tests are failing on CI, connectedCheck and buildOnServer are passing for me locally.

@mzgreen
Copy link
Contributor Author

mzgreen commented Jul 14, 2022

Pinging @yigit @danysantiago @droid-wan-kenobi

@danysantiago danysantiago self-requested a review July 14, 2022 13:02
@danysantiago
Copy link
Member

Thanks for sending this, looks promising! I am a bit busy this week but will try to take a look as soon as I can.

@mzgreen
Copy link
Contributor Author

mzgreen commented Oct 18, 2022

Looks like Room is getting a huge Kotlin rewrite right now so it may not be the best time for such contribution?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants