simolus3 / sqlite3.dart

sqlite3 bindings for Dart
MIT License
227 stars 76 forks source link

Increse default sqlite_max_variable_number #246

Open glanium opened 4 months ago

glanium commented 4 months ago

If possible, increase sqlite_max_variable_number. The default value of SQLITE_LIMIT_VARIABLE_NUMBER in the latest sqlite is 32766. When dealing with large amounts of data, the default 32766 is too small and painful.

So please increase it.

On In Ubuntu its value is 250,000?

I suggest 1,000,000!

Thx.

simolus3 commented 4 months ago

Given that most Linux distros seem to set it to 250k, that's a reasonable number to commit to. But it's also a lot of work to change these options (we need separate releases for iOS and Android), we can't just patch cmake files for all platforms.

There's also no clear consensus for this - most distros use 250k, but that's not officially recommended so it's not clear where that comes from. Arch also increases the maximum expression depth to 10k for instance, Debian doesn't. Once Flutter supports native assets in a stable form, we'll be able to compile sqlite3 with a Dart build script that would be easy to configure. Given that different users will also have different requirements (and blindly increasing the amount of variables also has downsides, preparing SELECT ?1000000 will consume lots of memory). It's not great, but you could copy the build scripts for the platforms you need and manually copy what sqlite3_flutter_libs is doing except that you'd compile sqlite3 with your preferred options.