Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is it worth compiling in math functions by default? #1240

Open
c9845 opened this issue May 6, 2024 · 4 comments
Open

Is it worth compiling in math functions by default? #1240

c9845 opened this issue May 6, 2024 · 4 comments

Comments

@c9845
Copy link

c9845 commented May 6, 2024

To use math functions like pow() and round(), you currently have to do go build -tags "sqlite_math_functions" .... This works, but this build tag is often forgotten/missed until an error like "not such function" is kicked out.

I think it should be considered to add the math functions into builds by default (aka no build tag required). I think it is common enough to use round(), 'floor(), and ceil() that adding the math functions by default would make sense.

This would help adapting SQL queries from MySQL/MariaDB or Postgres where the math functionality is always present. It would also help swapping in this library versus the modernc/cznic library that has the math functionality enabled by default [1]

[1] https://gitlab.com/cznic/sqlite/-/tags/v1.14.5

@c9845
Copy link
Author

c9845 commented May 15, 2024

So, looking into this, I am pretty sure this is as simple as removing the below lines from the sqlite3_opt_math_functions.go file.

//go:build sqlite_math_functions
// +build sqlite_math_functions

@c9845
Copy link
Author

c9845 commented May 15, 2024

Obviously, the README would need updated to either remove the "Math Functions" from the "Feature/Extension List" table too (or note that the math functions are built-in).

@c9845
Copy link
Author

c9845 commented Jul 9, 2024

This does not affect round(), but does affect floor() and ceil() as well as everything else from this page [1]

[1] https://www.sqlite.org/lang_mathfunc.html

@dorzepowski
Copy link

I would say that we could have cake and eat it too, by setting something like:

//go:build !disable_sqlite_math_functions
// +build !disable_sqlite_math_functions

It will give all those benefits when migrating or supporting multiple db's as mentioned in the issue, while still allowing for decreasing build size in case if someone needs to have smaller binaries and doesn't use those functions.

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

No branches or pull requests

2 participants