singlestoredb-laravel-driver
singlestoredb-laravel-driver copied to clipboard
Add support for the "change"-function
It would be great if this feature was supported.
As I understand, the following would have to be done in order to change a field (This example changes a field called "name" from a varchar to text):
- Add a column of the desired type (ALTER TABLE table_name ADD COLUMN field2 TEXT CHARACTER SET utf8mb4 DEFAULT NULL COLLATE
utf8mb4_unicode_ci
; ) - Fill values in this column with the column you want to change the data type (UPDATE table_name SET name2 = name;)
- Remove the previous column (ALTER TABLE table_name DROP COLUMN name;)
- Change the name of the new column (ALTER TABLE table_name CHANGE name2 name;)
Would it be possible to implement this? Or is there already another way to do this?
Does Laravel have a change function already that works with other database backends or are you just suggesting that this pattern should be made into a nice function?
@carlsverre Yes, the function exists and works with other databases. I am migrating from mysql driver to singlestore, and I have several migrations that use the change()
-function that I am working on rewriting as we speak.
Gotcha. This is a great feature request. Thank you!
Hi, any news about this issue/feature request?
@carlsverre I like this suggestion. Can this all be done in a single SQL DB transaction?
Unfortunately alter tables in SingleStore don't operate within user defined transactions. So it's not possible to perform this entire column change process atomically.
Is this issue still relevant? It's easy to implement this using the OP's workaround: adding, inserting, dropping, renaming.
You may check PR #88