-
Notifications
You must be signed in to change notification settings - Fork 119
Add support for CREATE FUNCTION
and CREATE OR REPLACE FUNCTION
; the later in schema loading
#146
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
Merged
PNixx
merged 4 commits into
PNixx:master
from
huntresslabs:create_or_replace_function_main
Oct 9, 2024
Merged
Add support for CREATE FUNCTION
and CREATE OR REPLACE FUNCTION
; the later in schema loading
#146
PNixx
merged 4 commits into
PNixx:master
from
huntresslabs:create_or_replace_function_main
Oct 9, 2024
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I think we need make |
In a rails app, with existing Clickhouse schema w/a function defined, a `rails db:schema:load` will not always succeed; this is because the function may already exist. ``` Code: 609. DB::Exception: User-defined function 'uuid7ToDateTime' already exists. (FUNCTION_ALREADY_EXISTS) (version 23.9.6.20 (official build)) ``` This can be addressed in at least two ways: 1. Guard the `CREATE FUNCTION` statement with `IF NOT EXISTS`; this would prevent trying to create the function, however, it also does not guarantee that the function is up-to-date with the schema 2. Use `CREATE OR REPLACE FUNCTION` instead. This has the benefit of ensuring the function is up-to-date with the schema This commit pursues option #2.
0efbcb6
to
23ba2e2
Compare
I've added the |
CREATE FUNCTION
to CREATE OR REPLACE FUNCTION
CREATE FUNCTION
and CREATE OR REPLACE FUNCTION
; later in schema loading
CREATE FUNCTION
and CREATE OR REPLACE FUNCTION
; later in schema loadingCREATE FUNCTION
and CREATE OR REPLACE FUNCTION
; the later in schema loading
danielwestendorf
commented
Oct 5, 2024
dmitrytrager
added a commit
to mayak-bz/clickhouse-activerecord
that referenced
this pull request
Jan 20, 2025
* new-master: (77 commits) Use a flag to track updates/deletes instead of guessing (PNixx#188) Do not squish table definitions in schema dump. (PNixx#187) Add support for integer limits in map type (PNixx#178) Improve function dumps (PNixx#179) Reliably sort functions, views, and materialized views in schema (PNixx#181) Maintain primary key type specificity (PNixx#183) Support create table with request settings Support codec column PNixx#135, refactoring Add Array support to Map (PNixx#158) SchemaDumper adds materialized view destination (PNixx#159) Improve DB::Exception error handling (PNixx#165) Add blank line after create_function in schema (PNixx#170) Include column definitions in schema dump if the column name is not `id` (PNixx#173) Add support for LIMIT BY clause (PNixx#169) Add support for force `CREATE FUNCTION` (PNixx#146) Implement GROUP BY GROUPING SETS with new `group_by_grouping_sets` query method. (PNixx#161) fix for function creation in structure.sql (PNixx#166) fix schema dumper fix spec fix detect model primary key for older clickhouse versions ...
dmitrytrager
added a commit
to mayak-bz/clickhouse-activerecord
that referenced
this pull request
Jan 20, 2025
* new-master: (77 commits) Use a flag to track updates/deletes instead of guessing (PNixx#188) Do not squish table definitions in schema dump. (PNixx#187) Add support for integer limits in map type (PNixx#178) Improve function dumps (PNixx#179) Reliably sort functions, views, and materialized views in schema (PNixx#181) Maintain primary key type specificity (PNixx#183) Support create table with request settings Support codec column PNixx#135, refactoring Add Array support to Map (PNixx#158) SchemaDumper adds materialized view destination (PNixx#159) Improve DB::Exception error handling (PNixx#165) Add blank line after create_function in schema (PNixx#170) Include column definitions in schema dump if the column name is not `id` (PNixx#173) Add support for LIMIT BY clause (PNixx#169) Add support for force `CREATE FUNCTION` (PNixx#146) Implement GROUP BY GROUPING SETS with new `group_by_grouping_sets` query method. (PNixx#161) fix for function creation in structure.sql (PNixx#166) fix schema dumper fix spec fix detect model primary key for older clickhouse versions ...
dmitrytrager
added a commit
to mayak-bz/clickhouse-activerecord
that referenced
this pull request
Jan 21, 2025
* new-master: (77 commits) Use a flag to track updates/deletes instead of guessing (PNixx#188) Do not squish table definitions in schema dump. (PNixx#187) Add support for integer limits in map type (PNixx#178) Improve function dumps (PNixx#179) Reliably sort functions, views, and materialized views in schema (PNixx#181) Maintain primary key type specificity (PNixx#183) Support create table with request settings Support codec column PNixx#135, refactoring Add Array support to Map (PNixx#158) SchemaDumper adds materialized view destination (PNixx#159) Improve DB::Exception error handling (PNixx#165) Add blank line after create_function in schema (PNixx#170) Include column definitions in schema dump if the column name is not `id` (PNixx#173) Add support for LIMIT BY clause (PNixx#169) Add support for force `CREATE FUNCTION` (PNixx#146) Implement GROUP BY GROUPING SETS with new `group_by_grouping_sets` query method. (PNixx#161) fix for function creation in structure.sql (PNixx#166) fix schema dumper fix spec fix detect model primary key for older clickhouse versions ...
tylerCaineRhodes
pushed a commit
to magellan-ai/clickhouse-activerecord
that referenced
this pull request
Jul 25, 2025
* Switch from `CREATE FUNCTION` to `CREATE OR REPLACE FUNCTION` In a rails app, with existing Clickhouse schema w/a function defined, a `rails db:schema:load` will not always succeed; this is because the function may already exist. ``` Code: 609. DB::Exception: User-defined function 'uuid7ToDateTime' already exists. (FUNCTION_ALREADY_EXISTS) (version 23.9.6.20 (official build)) ```
syabruk
added a commit
to machinio/clickhouse-activerecord
that referenced
this pull request
Aug 15, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes ##145
In a rails app, with existing Clickhouse schema w/a function defined, a
rails db:schema:load
will not always succeed; this is because the function may already exist.This can be addressed in at least two ways:
CREATE FUNCTION
statement withIF NOT EXISTS
; this would prevent trying to create the function, however, it also does not guarantee that the function is up-to-date with the schemaCREATE OR REPLACE FUNCTION
instead. This has the benefit of ensuring the function is up-to-date with the schemaThis commit pursues option #2. It adds a
force
option to thecreate_function
method definition;force: true
us used when dumping the schema so that schema can be dumped/loaded idempotently.