123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823 |
- /**
- ATTENTION!!!
- Please make sure to create a backup of your live data before running this update.
- This update is rather complicated and although I have tried my best I cannot guarantee that I did not make any mistake. [Lemongrass]
- We would also advise you to check the data in the temporary table after the insert statement and before the update statements.
- You could do so by running
- select * from `tmp_randomoptionfix` where `new_index` <> `old_index`;
- to see where changes happen and options will be moved.
- For executing this update your user needs create table and drop table permissions. Either run the update with another user [admin or root for example] or give your database user these permissions temporarily.
- Do not forget to remove these permissions again, as they are usually not necessary and it is rather dangerous, if someone gets access to your database user.
- Additionally if you have more than one storage table (see conf/inter_server.yml) make sure to also update those tables (see instructions at the bottom of this script).
- Comment the line below to really run the script, this is a safeguard that you confirm you have read and understood what was written above.
- **/
- cancel;
- -- Create a temporary table to store the data for the update
- create table `tmp_randomoptionfix` (
- `id` int(11) unsigned NOT NULL,
- `new_index` smallint(5) NOT NULL,
- `old_index` smallint(5) NOT NULL,
- `option_id` smallint(5) NOT NULL,
- `option_val` smallint(5) NOT NULL,
- `option_parm` tinyint(3) NOT NULL,
- PRIMARY KEY ( `id`, `old_index` )
- );
- -- Create auction data
- insert into `tmp_randomoptionfix` ( `id`, `new_index`, `old_index`, `option_id`, `option_val`, `option_parm` )
- select
- `id`,
- row_number() over( partition by `id` order by `old_index` asc ) - 1 as `new_index`,
- `old_index`,
- `option_id`,
- `option_val`,
- `option_parm`
- from (
- select * from (
- select
- `auction_id` as `id`,
- 0 as `old_index`,
- `option_id0` as `option_id`,
- `option_val0` as `option_val`,
- `option_parm0` as `option_parm`
- from `auction`
- where `option_id0` <> 0
- union
- select
- `auction_id` as `id`,
- 1 as `old_index`,
- `option_id1` as `option_id`,
- `option_val1` as `option_val`,
- `option_parm1` as `option_parm`
- from `auction`
- where `option_id1` <> 0
- union
- select
- `auction_id` as `id`,
- 2 as `old_index`,
- `option_id2` as `option_id`,
- `option_val2` as `option_val`,
- `option_parm2` as `option_parm`
- from `auction`
- where `option_id2` <> 0
- union
- select
- `auction_id` as `id`,
- 3 as `old_index`,
- `option_id3` as `option_id`,
- `option_val3` as `option_val`,
- `option_parm3` as `option_parm`
- from `auction`
- where `option_id3` <> 0
- union
- select
- `auction_id` as `id`,
- 4 as `old_index`,
- `option_id4` as `option_id`,
- `option_val4` as `option_val`,
- `option_parm4` as `option_parm`
- from `auction`
- where `option_id4` <> 0
- ) t2
- order by `id`, `old_index`
- ) t ;
- -- Fix option 0
- update `auction`
- left join `tmp_randomoptionfix`
- on `auction`.`auction_id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 0
- set
- `option_id0` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val0` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm0` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 1
- update `auction`
- left join `tmp_randomoptionfix`
- on `auction`.`auction_id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 1
- set
- `option_id1` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val1` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm1` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 2
- update `auction`
- left join `tmp_randomoptionfix`
- on `auction`.`auction_id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 2
- set
- `option_id2` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val2` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm2` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 3
- update `auction`
- left join `tmp_randomoptionfix`
- on `auction`.`auction_id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 3
- set
- `option_id3` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val3` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm3` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 4
- update `auction`
- left join `tmp_randomoptionfix`
- on `auction`.`auction_id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 4
- set
- `option_id4` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val4` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm4` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Delete the data to have a clean table for the next run
- delete from `tmp_randomoptionfix`;
- -- Create cart_inventory data
- insert into `tmp_randomoptionfix` ( `id`, `new_index`, `old_index`, `option_id`, `option_val`, `option_parm` )
- select
- `id`,
- row_number() over( partition by `id` order by `old_index` asc ) - 1 as `new_index`,
- `old_index`,
- `option_id`,
- `option_val`,
- `option_parm`
- from (
- select * from (
- select
- `id`,
- 0 as `old_index`,
- `option_id0` as `option_id`,
- `option_val0` as `option_val`,
- `option_parm0` as `option_parm`
- from `cart_inventory`
- where `option_id0` <> 0
- union
- select
- `id`,
- 1 as `old_index`,
- `option_id1` as `option_id`,
- `option_val1` as `option_val`,
- `option_parm1` as `option_parm`
- from `cart_inventory`
- where `option_id1` <> 0
- union
- select
- `id`,
- 2 as `old_index`,
- `option_id2` as `option_id`,
- `option_val2` as `option_val`,
- `option_parm2` as `option_parm`
- from `cart_inventory`
- where `option_id2` <> 0
- union
- select
- `id`,
- 3 as `old_index`,
- `option_id3` as `option_id`,
- `option_val3` as `option_val`,
- `option_parm3` as `option_parm`
- from `cart_inventory`
- where `option_id3` <> 0
- union
- select
- `id`,
- 4 as `old_index`,
- `option_id4` as `option_id`,
- `option_val4` as `option_val`,
- `option_parm4` as `option_parm`
- from `cart_inventory`
- where `option_id4` <> 0
- ) t2
- order by `id`, `old_index`
- ) t ;
- -- Fix option 0
- update `cart_inventory`
- left join `tmp_randomoptionfix`
- on `cart_inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 0
- set
- `option_id0` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val0` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm0` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 1
- update `cart_inventory`
- left join `tmp_randomoptionfix`
- on `cart_inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 1
- set
- `option_id1` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val1` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm1` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 2
- update `cart_inventory`
- left join `tmp_randomoptionfix`
- on `cart_inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 2
- set
- `option_id2` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val2` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm2` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 3
- update `cart_inventory`
- left join `tmp_randomoptionfix`
- on `cart_inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 3
- set
- `option_id3` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val3` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm3` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 4
- update `cart_inventory`
- left join `tmp_randomoptionfix`
- on `cart_inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 4
- set
- `option_id4` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val4` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm4` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Delete the data to have a clean table for the next run
- delete from `tmp_randomoptionfix`;
- -- Create guild_storage data
- insert into `tmp_randomoptionfix` ( `id`, `new_index`, `old_index`, `option_id`, `option_val`, `option_parm` )
- select
- `id`,
- row_number() over( partition by `id` order by `old_index` asc ) - 1 as `new_index`,
- `old_index`,
- `option_id`,
- `option_val`,
- `option_parm`
- from (
- select * from (
- select
- `id`,
- 0 as `old_index`,
- `option_id0` as `option_id`,
- `option_val0` as `option_val`,
- `option_parm0` as `option_parm`
- from `guild_storage`
- where `option_id0` <> 0
- union
- select
- `id`,
- 1 as `old_index`,
- `option_id1` as `option_id`,
- `option_val1` as `option_val`,
- `option_parm1` as `option_parm`
- from `guild_storage`
- where `option_id1` <> 0
- union
- select
- `id`,
- 2 as `old_index`,
- `option_id2` as `option_id`,
- `option_val2` as `option_val`,
- `option_parm2` as `option_parm`
- from `guild_storage`
- where `option_id2` <> 0
- union
- select
- `id`,
- 3 as `old_index`,
- `option_id3` as `option_id`,
- `option_val3` as `option_val`,
- `option_parm3` as `option_parm`
- from `guild_storage`
- where `option_id3` <> 0
- union
- select
- `id`,
- 4 as `old_index`,
- `option_id4` as `option_id`,
- `option_val4` as `option_val`,
- `option_parm4` as `option_parm`
- from `guild_storage`
- where `option_id4` <> 0
- ) t2
- order by `id`, `old_index`
- ) t ;
- -- Fix option 0
- update `guild_storage`
- left join `tmp_randomoptionfix`
- on `guild_storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 0
- set
- `option_id0` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val0` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm0` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 1
- update `guild_storage`
- left join `tmp_randomoptionfix`
- on `guild_storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 1
- set
- `option_id1` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val1` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm1` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 2
- update `guild_storage`
- left join `tmp_randomoptionfix`
- on `guild_storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 2
- set
- `option_id2` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val2` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm2` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 3
- update `guild_storage`
- left join `tmp_randomoptionfix`
- on `guild_storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 3
- set
- `option_id3` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val3` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm3` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 4
- update `guild_storage`
- left join `tmp_randomoptionfix`
- on `guild_storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 4
- set
- `option_id4` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val4` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm4` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Delete the data to have a clean table for the next run
- delete from `tmp_randomoptionfix`;
- -- Create inventory data
- insert into `tmp_randomoptionfix` ( `id`, `new_index`, `old_index`, `option_id`, `option_val`, `option_parm` )
- select
- `id`,
- row_number() over( partition by `id` order by `old_index` asc ) - 1 as `new_index`,
- `old_index`,
- `option_id`,
- `option_val`,
- `option_parm`
- from (
- select * from (
- select
- `id`,
- 0 as `old_index`,
- `option_id0` as `option_id`,
- `option_val0` as `option_val`,
- `option_parm0` as `option_parm`
- from `inventory`
- where `option_id0` <> 0
- union
- select
- `id`,
- 1 as `old_index`,
- `option_id1` as `option_id`,
- `option_val1` as `option_val`,
- `option_parm1` as `option_parm`
- from `inventory`
- where `option_id1` <> 0
- union
- select
- `id`,
- 2 as `old_index`,
- `option_id2` as `option_id`,
- `option_val2` as `option_val`,
- `option_parm2` as `option_parm`
- from `inventory`
- where `option_id2` <> 0
- union
- select
- `id`,
- 3 as `old_index`,
- `option_id3` as `option_id`,
- `option_val3` as `option_val`,
- `option_parm3` as `option_parm`
- from `inventory`
- where `option_id3` <> 0
- union
- select
- `id`,
- 4 as `old_index`,
- `option_id4` as `option_id`,
- `option_val4` as `option_val`,
- `option_parm4` as `option_parm`
- from `inventory`
- where `option_id4` <> 0
- ) t2
- order by `id`, `old_index`
- ) t ;
- -- Fix option 0
- update `inventory`
- left join `tmp_randomoptionfix`
- on `inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 0
- set
- `option_id0` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val0` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm0` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 1
- update `inventory`
- left join `tmp_randomoptionfix`
- on `inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 1
- set
- `option_id1` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val1` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm1` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 2
- update `inventory`
- left join `tmp_randomoptionfix`
- on `inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 2
- set
- `option_id2` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val2` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm2` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 3
- update `inventory`
- left join `tmp_randomoptionfix`
- on `inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 3
- set
- `option_id3` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val3` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm3` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 4
- update `inventory`
- left join `tmp_randomoptionfix`
- on `inventory`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 4
- set
- `option_id4` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val4` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm4` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Delete the data to have a clean table for the next run
- delete from `tmp_randomoptionfix`;
- -- Create mail_attachments data
- insert into `tmp_randomoptionfix` ( `id`, `new_index`, `old_index`, `option_id`, `option_val`, `option_parm` )
- select
- `id`,
- row_number() over( partition by `id` order by `old_index` asc ) - 1 as `new_index`,
- `old_index`,
- `option_id`,
- `option_val`,
- `option_parm`
- from (
- select * from (
- select
- `id`,
- 0 as `old_index`,
- `option_id0` as `option_id`,
- `option_val0` as `option_val`,
- `option_parm0` as `option_parm`
- from `mail_attachments`
- where `option_id0` <> 0
- union
- select
- `id`,
- 1 as `old_index`,
- `option_id1` as `option_id`,
- `option_val1` as `option_val`,
- `option_parm1` as `option_parm`
- from `mail_attachments`
- where `option_id1` <> 0
- union
- select
- `id`,
- 2 as `old_index`,
- `option_id2` as `option_id`,
- `option_val2` as `option_val`,
- `option_parm2` as `option_parm`
- from `mail_attachments`
- where `option_id2` <> 0
- union
- select
- `id`,
- 3 as `old_index`,
- `option_id3` as `option_id`,
- `option_val3` as `option_val`,
- `option_parm3` as `option_parm`
- from `mail_attachments`
- where `option_id3` <> 0
- union
- select
- `id`,
- 4 as `old_index`,
- `option_id4` as `option_id`,
- `option_val4` as `option_val`,
- `option_parm4` as `option_parm`
- from `mail_attachments`
- where `option_id4` <> 0
- ) t2
- order by `id`, `old_index`
- ) t ;
- -- Fix option 0
- update `mail_attachments`
- left join `tmp_randomoptionfix`
- on `mail_attachments`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 0
- set
- `option_id0` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val0` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm0` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 1
- update `mail_attachments`
- left join `tmp_randomoptionfix`
- on `mail_attachments`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 1
- set
- `option_id1` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val1` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm1` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 2
- update `mail_attachments`
- left join `tmp_randomoptionfix`
- on `mail_attachments`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 2
- set
- `option_id2` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val2` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm2` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 3
- update `mail_attachments`
- left join `tmp_randomoptionfix`
- on `mail_attachments`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 3
- set
- `option_id3` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val3` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm3` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 4
- update `mail_attachments`
- left join `tmp_randomoptionfix`
- on `mail_attachments`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 4
- set
- `option_id4` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val4` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm4` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Delete the data to have a clean table for the next run
- delete from `tmp_randomoptionfix`;
- -- Create storage data
- insert into `tmp_randomoptionfix` ( `id`, `new_index`, `old_index`, `option_id`, `option_val`, `option_parm` )
- select
- `id`,
- row_number() over( partition by `id` order by `old_index` asc ) - 1 as `new_index`,
- `old_index`,
- `option_id`,
- `option_val`,
- `option_parm`
- from (
- select * from (
- select
- `id`,
- 0 as `old_index`,
- `option_id0` as `option_id`,
- `option_val0` as `option_val`,
- `option_parm0` as `option_parm`
- from `storage`
- where `option_id0` <> 0
- union
- select
- `id`,
- 1 as `old_index`,
- `option_id1` as `option_id`,
- `option_val1` as `option_val`,
- `option_parm1` as `option_parm`
- from `storage`
- where `option_id1` <> 0
- union
- select
- `id`,
- 2 as `old_index`,
- `option_id2` as `option_id`,
- `option_val2` as `option_val`,
- `option_parm2` as `option_parm`
- from `storage`
- where `option_id2` <> 0
- union
- select
- `id`,
- 3 as `old_index`,
- `option_id3` as `option_id`,
- `option_val3` as `option_val`,
- `option_parm3` as `option_parm`
- from `storage`
- where `option_id3` <> 0
- union
- select
- `id`,
- 4 as `old_index`,
- `option_id4` as `option_id`,
- `option_val4` as `option_val`,
- `option_parm4` as `option_parm`
- from `storage`
- where `option_id4` <> 0
- ) t2
- order by `id`, `old_index`
- ) t ;
- -- Fix option 0
- update `storage`
- left join `tmp_randomoptionfix`
- on `storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 0
- set
- `option_id0` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val0` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm0` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 1
- update `storage`
- left join `tmp_randomoptionfix`
- on `storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 1
- set
- `option_id1` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val1` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm1` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 2
- update `storage`
- left join `tmp_randomoptionfix`
- on `storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 2
- set
- `option_id2` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val2` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm2` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 3
- update `storage`
- left join `tmp_randomoptionfix`
- on `storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 3
- set
- `option_id3` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val3` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm3` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 4
- update `storage`
- left join `tmp_randomoptionfix`
- on `storage`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 4
- set
- `option_id4` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val4` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm4` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Delete the data to have a clean table for the next run
- delete from `tmp_randomoptionfix`;
- -- Repeat this for any other storage tables that you have created (for example VIP)
- -- To do this copy paste the code below and replace ${other_storage} with the name of your table
- /**
- -- Create ${other_storage} data
- insert into `tmp_randomoptionfix` ( `id`, `new_index`, `old_index`, `option_id`, `option_val`, `option_parm` )
- select
- `id`,
- row_number() over( partition by `id` order by `old_index` asc ) - 1 as `new_index`,
- `old_index`,
- `option_id`,
- `option_val`,
- `option_parm`
- from (
- select * from (
- select
- `id`,
- 0 as `old_index`,
- `option_id0` as `option_id`,
- `option_val0` as `option_val`,
- `option_parm0` as `option_parm`
- from `${other_storage}`
- where `option_id0` <> 0
- union
- select
- `id`,
- 1 as `old_index`,
- `option_id1` as `option_id`,
- `option_val1` as `option_val`,
- `option_parm1` as `option_parm`
- from `${other_storage}`
- where `option_id1` <> 0
- union
- select
- `id`,
- 2 as `old_index`,
- `option_id2` as `option_id`,
- `option_val2` as `option_val`,
- `option_parm2` as `option_parm`
- from `${other_storage}`
- where `option_id2` <> 0
- union
- select
- `id`,
- 3 as `old_index`,
- `option_id3` as `option_id`,
- `option_val3` as `option_val`,
- `option_parm3` as `option_parm`
- from `${other_storage}`
- where `option_id3` <> 0
- union
- select
- `id`,
- 4 as `old_index`,
- `option_id4` as `option_id`,
- `option_val4` as `option_val`,
- `option_parm4` as `option_parm`
- from `${other_storage}`
- where `option_id4` <> 0
- ) t2
- order by `id`, `old_index`
- ) t ;
- -- Fix option 0
- update `${other_storage}`
- left join `tmp_randomoptionfix`
- on `${other_storage}`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 0
- set
- `option_id0` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val0` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm0` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 1
- update `${other_storage}`
- left join `tmp_randomoptionfix`
- on `${other_storage}`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 1
- set
- `option_id1` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val1` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm1` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 2
- update `${other_storage}`
- left join `tmp_randomoptionfix`
- on `${other_storage}`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 2
- set
- `option_id2` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val2` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm2` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 3
- update `${other_storage}`
- left join `tmp_randomoptionfix`
- on `${other_storage}`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 3
- set
- `option_id3` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val3` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm3` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Fix option 4
- update `${other_storage}`
- left join `tmp_randomoptionfix`
- on `${other_storage}`.`id` = `tmp_randomoptionfix`.`id` and `tmp_randomoptionfix`.`new_index` = 4
- set
- `option_id4` = coalesce( `tmp_randomoptionfix`.`option_id`, 0 ),
- `option_val4` = coalesce( `tmp_randomoptionfix`.`option_val`, 0 ),
- `option_parm4` = coalesce( `tmp_randomoptionfix`.`option_parm`, 0 )
- ;
- -- Delete the data to have a clean table for the next run
- delete from `tmp_randomoptionfix`;
- **/
- drop table `tmp_randomoptionfix`;
|