Abstract
Our work studies the application of an existing framework, called OPT++, for query optimization for relational databases. The initial application was a simple bottom-up optimizer, while the second application was to implement the query optimization strategies of PostgreSQL with the framework. Our experience illustrates the power and the pitfalls of reusing frameworks. During the course of the two applications we found substantial need to improve the design at the detailed level though the main abstractions of OPT++ did not change. Our second application raised many issues with the performance of OPT++, which is surprising since its fundamental purpose was a major study of relative performance of query optimization strategies by its author. We have addressed many performance issues, but some with broad impact on the framework's code are still being addressed.