CTAS partitioning relies on evaluating the expression newPartitionValue(column A) || newPartitionValue(column B) || ..
to determine if there is a new partition should start. The "newPartitionValue" function returns true if the current value of the expression is different from the previous value. The function holds some state in the workspace (the previous value), and thus needs to be evaluated every time. Short circuit expression evaluation causes this to not be the case.