A query optimization system is described that, at runtime, optimizes the execution pipeline generated for a query. Based upon communications between nodes in the execution pipeline, the execution pipeline generated for a query is optimized by modifying the execution pipeline to create a modified execution pipeline. The modified execution pipeline is then executed to execute the query and results obtained for the query. The changes or modifications made to an execution pipeline may include changing the capabilities (e.g., changes to inputs and/or outputs of a node, changing the task(s) or function(s) performed by the node) of one or more nodes within the execution pipeline. The changes may include changing the position of one or more nodes within a directed acyclic graph representing the execution pipeline.