<story><title>What I talk about when I talk about query optimizer (part 1): IR design</title><url>https://xuanwo.io/2024/02-what-i-talk-about-when-i-talk-about-query-optimizer-part-1/</url></story><parent_chain></parent_chain><comment><author>refset</author><text>&amp;gt; the Query Graph Model (QGM) representation is quite abstract and hardcodes many properties, making it exceptionally difficult to understand. Its claimed extensibility is also questionable.&lt;p&gt;I don&amp;#x27;t know much about the context, but it was interesting to note that Materialize scrapped their QGM code last year: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;MaterializeInc&amp;#x2F;materialize&amp;#x2F;pull&amp;#x2F;17139&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;MaterializeInc&amp;#x2F;materialize&amp;#x2F;pull&amp;#x2F;17139&lt;/a&gt;&lt;p&gt;Also, a couple of interesting projects in the IR space:&lt;p&gt;- &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;substrait.io&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;substrait.io&amp;#x2F;&lt;/a&gt; is a cross-language serialization for Relational Algebra&lt;p&gt;- &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.lingo-db.com&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.lingo-db.com&amp;#x2F;&lt;/a&gt; is an MLIR-based (LLVM) query engine described extensively in this paper &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;db.in.tum.de&amp;#x2F;~jungmair&amp;#x2F;papers&amp;#x2F;p2485-jungmair.pdf?lang=en&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;db.in.tum.de&amp;#x2F;~jungmair&amp;#x2F;papers&amp;#x2F;p2485-jungmair.pdf?lan...&lt;/a&gt;</text></comment>
<story><title>What I talk about when I talk about query optimizer (part 1): IR design</title><url>https://xuanwo.io/2024/02-what-i-talk-about-when-i-talk-about-query-optimizer-part-1/</url></story><parent_chain></parent_chain><comment><author>alamb</author><text>BTW you can see a version of what an industrial strength query optimizer &amp;#x2F; execution engine looks like in Rust &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;arrow.apache.org&amp;#x2F;datafusion&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;arrow.apache.org&amp;#x2F;datafusion&amp;#x2F;&lt;/a&gt;&lt;p&gt;(can also use it in your own projects)&lt;p&gt;It is quite similar to what is described in this post</text></comment>