1. A method of executing a query comprising user defined functions and abstract data type parameters in a computer to retrieve data from a database, the method comprising the steps of: receiving optimization information from a user; and optimizing the execution of the query based on the received optimization information for execution within a massively parallel, shared nothing architecture, wherein the optimization information specifies that it is safe to update in place.