Is column order reliable in UPDATE? Can we reply on the order of columns in an UPDATE?

SET @x = 0
UPDATE table1 SET
col1=IF(col1 IS NULL, NULL, @x:=@x+col1), 
col2=IF(col2 IS NULL, NULL, @x:=@x+col2),
col3=IF(col3 IS NULL, NULL, @x:=0)


Is it guaranteed that col1 is UPDATEd before col2?

I do care about the order in calculating the value @x.
The order is unreliable and is subject to change on different query evaluation plans. 

However, I found a reliable hack around this. Please consider my presentation Programmatic Queries: Things you can Code with MySQL. In particular see slides 10 - 15.

The trick presented utilizes the known order of evaluation in a CASE clause, as follows:

SELECT 
  CASE
    WHEN (@c3 := @c1 + @c2) IS NULL THEN NULL
    WHEN (@c1 := @c2) IS NULL THEN NULL
    WHEN (@c2 := @c3) IS NULL THEN NULL
    ELSE @c3
  END AS seq
FROM 
  mysql.help_topic, 
  (SELECT @c1 := 1, @c2 := 0) s_init
LIMIT 10;


The CASE expression has to evaluate the WHEN clauses by order of appearance (to be more specific, it does so, and it doesn't make sense to do otherwise).

In the above none of the WHEN expressions make for a true value, which is why the CASE clause keeps evaluating them one by one. This gives you your required order.