1) Not really. Currently, Odysseus performs the following to optimizations:
a) Query rewrite: e.g. Selection and projection pushdown
b) Query sharing: Along as the way from the sources to the sinks are the same in different queries, only one operator for each query is used.
2) Currently, different execution plans are not generated. It is not that necessary in stream system because we do not have mulitple data access paths to choose from. Only join order could be relevant, but for this meta data about the sources is needed. There are first approaches but not in the current release.