<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mooncake: Real-Time Columnstore &amp; Apache Iceberg Lakehouse for PostgreSQL on Mooncake</title>
    <link>https://mooncake.pgsty.com/</link>
    <description>Recent content in Mooncake: Real-Time Columnstore &amp; Apache Iceberg Lakehouse for PostgreSQL on Mooncake</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Thu, 05 Nov 2026 19:17:16 +0800</lastBuildDate>
    
    
      <atom:link href="https://mooncake.pgsty.com/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Architecture</title>
        <link>https://mooncake.pgsty.com/docs/intro/architecture/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/architecture/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; (&lt;code&gt;v0.3.0&lt;/code&gt;) combines three specialized components inside a single PostgreSQL deployment:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/duckdb/pg_duckdb&#34;&gt;&lt;code&gt;pg_duckdb&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v1.2.0&lt;/code&gt;)&lt;/strong&gt;: Embeds the &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt; vectorized analytical execution engine inside PostgreSQL and routes queries against non-heap table access methods.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.0.1&lt;/code&gt;)&lt;/strong&gt;: A Rust library and background worker embedded inside &lt;code&gt;pg_mooncake&lt;/code&gt; that ingests PostgreSQL logical replication streams, maintains an in-memory &lt;strong&gt;Apache Arrow&lt;/strong&gt; write buffer and &lt;strong&gt;Roaring Bitmap&lt;/strong&gt; deletion vectors, flushes &lt;strong&gt;Parquet&lt;/strong&gt; files, and emits &lt;strong&gt;Apache Iceberg v2&lt;/strong&gt; table metadata.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/&#34;&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.0.2&lt;/code&gt;)&lt;/strong&gt;: A DuckDB 2.0 C++/Rust storage extension loaded automatically by &lt;code&gt;pg_mooncake&lt;/code&gt; from a local extension repository (&lt;code&gt;mooncake.extension_repository&lt;/code&gt;). It connects to Moonlink over a local Unix domain socket RPC (&lt;code&gt;pg_mooncake/moonlink.sock&lt;/code&gt;) to read consistent snapshots across both flushed Parquet files and buffered Arrow batches.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Together, they expose a native PostgreSQL Table Access Method (&lt;code&gt;USING mooncake&lt;/code&gt;) managed through &lt;code&gt;CALL mooncake.create_table(dst, src)&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Create Columnstore Table</title>
        <link>https://mooncake.pgsty.com/docs/reference/create-columnstore/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/reference/create-columnstore/</guid>
        <description>&lt;p&gt;In &lt;code&gt;pg_mooncake&lt;/code&gt;, columnstore tables are created as &lt;strong&gt;real-time mirrors&lt;/strong&gt; of existing PostgreSQL rowstore (heap or partitioned) tables using the &lt;code&gt;mooncake.create_table&lt;/code&gt; procedure.&lt;/p&gt;&#xA;&lt;h2 id=&#34;signature&#34;&gt;Procedure Signature&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-12a76879-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-12a76879-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_table&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src_uri&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DEFAULT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;table_config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DEFAULT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;wide expand td-table--wide&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dst&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;(Required)&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Name of the destination columnstore mirror table to create (supports &lt;code&gt;schema.table&lt;/code&gt;, defaults to &lt;code&gt;public&lt;/code&gt; if unqualified).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;src&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;(Required)&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Name of the source PostgreSQL rowstore or partitioned table to replicate from (supports &lt;code&gt;schema.table&lt;/code&gt;).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;src_uri&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;NULL&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Connection URI (&lt;code&gt;postgresql://user:pass@host:port/dbname&lt;/code&gt;) of a remote PostgreSQL instance when replicating from an external database. When &lt;code&gt;NULL&lt;/code&gt;, replicates from the current local database.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;table_config&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;json&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;NULL&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Optional JSON object configuring Moonlink storage and ingestion settings (such as &lt;code&gt;write_buffer_size&lt;/code&gt; or initial data copy behavior).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-callout td-callout--important&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Parameter Name: &lt;code&gt;src_uri&lt;/code&gt; (Not &lt;code&gt;source_uri&lt;/code&gt;)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Earlier upstream documentation contained a typo showing &lt;code&gt;source_uri =&amp;gt; &#39;postgresql://...&#39;&lt;/code&gt;. The actual parameter name in &lt;code&gt;pg_mooncake&lt;/code&gt;&amp;rsquo;s SQL definition (&lt;code&gt;src/functions.rs&lt;/code&gt;) is &lt;strong&gt;&lt;code&gt;src_uri&lt;/code&gt;&lt;/strong&gt;. Always use &lt;code&gt;src_uri =&amp;gt; &#39;postgresql://...&#39;&lt;/code&gt; when calling &lt;code&gt;mooncake.create_table&lt;/code&gt; with named arguments.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Hello World Tutorial</title>
        <link>https://mooncake.pgsty.com/docs/getting-started/hello-world/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/getting-started/hello-world/</guid>
        <description>&lt;p&gt;This tutorial walks through the core operations of &lt;code&gt;pg_mooncake&lt;/code&gt;: creating a regular PostgreSQL rowstore table, creating a real-time columnstore mirror (&lt;code&gt;USING mooncake&lt;/code&gt;), running transactional &lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, and &lt;code&gt;DELETE&lt;/code&gt; statements, testing rollback semantics, and joining columnstore and rowstore tables.&lt;/p&gt;&#xA;&lt;h2 id=&#34;enable&#34;&gt;1. Enable the Extension&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Connect to your PostgreSQL database and ensure &lt;code&gt;pg_mooncake&lt;/code&gt; (along with &lt;code&gt;pg_duckdb&lt;/code&gt;) is enabled:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b465ca7d-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b465ca7d-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;EXISTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_mooncake&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CASCADE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;create-mirror&#34;&gt;2. Create a Rowstore Table &amp;amp; Columnstore Mirror&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;First, create a standard PostgreSQL heap table (&lt;code&gt;user_activity&lt;/code&gt;) for your transactional writes, then call &lt;code&gt;mooncake.create_table&lt;/code&gt; to create its real-time columnstore mirror (&lt;code&gt;user_activity_columnstore&lt;/code&gt;):&lt;/p&gt;</description>
      </item>
    <item>
        <title>Real-Time Operational Analytics (HTAP)</title>
        <link>https://mooncake.pgsty.com/docs/use-cases/real-time-analytics/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/use-cases/real-time-analytics/</guid>
        <description>&lt;p&gt;If you are running slow analytical queries (dashboards, customer-facing metrics, multi-table aggregations) on PostgreSQL tables, &lt;code&gt;pg_mooncake&lt;/code&gt; gives you a straightforward route to accelerate them:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Keep your application write path 100% unchanged.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Create a real-time columnstore mirror&lt;/strong&gt; with &lt;code&gt;CALL mooncake.create_table(dst, src)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Route analytical &lt;code&gt;SELECT&lt;/code&gt; queries&lt;/strong&gt; to the columnstore mirror table.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;advantages&#34;&gt;Key Advantages&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Schema changes supported&lt;/strong&gt;: &lt;code&gt;ALTER TABLE ... ADD COLUMN&lt;/code&gt; and &lt;code&gt;DROP COLUMN&lt;/code&gt; on the source table automatically sync to the columnstore mirror.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fast &lt;code&gt;UPDATE&lt;/code&gt; and &lt;code&gt;DELETE&lt;/code&gt; handling&lt;/strong&gt;: &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; uses in-memory Apache Arrow buffers and Roaring Bitmap deletion vectors, handling high-frequency OLTP updates and deletes far more efficiently than traditional Parquet/Iceberg writers.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero-ETL&lt;/strong&gt;: No Debezium, Kafka, or Flink clusters to operate—&lt;code&gt;pg_mooncake&lt;/code&gt; uses PostgreSQL&amp;rsquo;s built-in logical replication.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Transactional consistency&lt;/strong&gt;: Analytical queries wait for the current PostgreSQL WAL LSN barrier before scanning, guaranteeing a consistent view of committed data.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;pattern&#34;&gt;Implementation Pattern: Write to Rowstore, Read from Columnstore&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-47247a86-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;24&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-47247a86-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 1. Your existing OLTP table (for transactional writes and point lookups)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;orders&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;SERIAL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIMARY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;customer_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INTEGER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;total_amount&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;DECIMAL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_status&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;TEXT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DEFAULT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;pending&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_date&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TIMESTAMP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DEFAULT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NOW&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 2. Create the real-time columnstore mirror (for analytics)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_table&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;orders_analytics&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;orders&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 3. Write operations: always use the original rowstore table&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;orders&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;customer_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;total_amount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;VALUES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;123&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;99&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;99&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;orders&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;total_amount&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;149&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;99&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_status&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;shipped&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 4. Analytical read operations: query the columnstore mirror&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;customer_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;COUNT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SUM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;total_amount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lifetime_value&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;orders_analytics&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_date&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CURRENT_DATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;GROUP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;customer_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;routing&#34;&gt;Manual Query Routing&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-callout td-callout--important&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Explicit Table Routing&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; does not automatically rewrite queries targeting &lt;code&gt;orders&lt;/code&gt; to target &lt;code&gt;orders_analytics&lt;/code&gt;. You choose which table to query based on your workload:&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Roadmap</title>
        <link>https://mooncake.pgsty.com/docs/about/roadmap/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/about/roadmap/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;The roadmap items below reflect the historical upstream &lt;code&gt;pg_mooncake v0.2&lt;/code&gt; design goals published at &lt;code&gt;docs.mooncake.dev/pg/roadmap&lt;/code&gt;, together with the current maintenance scope of the &lt;code&gt;pgsty/pg_mooncake&lt;/code&gt; fork (&lt;code&gt;v0.3.0&lt;/code&gt;).&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgsty-maintenance-focus-v030&#34;&gt;PGSTY Maintenance Focus (&lt;code&gt;v0.3.0+&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/pgsty&#34;&gt;&lt;strong&gt;PGSTY&lt;/strong&gt;&lt;/a&gt; fork of the Mooncake suite (&lt;code&gt;pg_mooncake v0.3.0&lt;/code&gt;, &lt;code&gt;duckdb_mooncake v0.0.2&lt;/code&gt;, &lt;code&gt;moonlink v0.0.1&lt;/code&gt;) prioritizes long-term production stability, PostgreSQL version coverage, and security hardening:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;PostgreSQL 14–18 Compatibility&lt;/strong&gt;: Keeping &lt;code&gt;pg_mooncake&lt;/code&gt; synchronized with current &lt;code&gt;pgrx&lt;/code&gt; (&lt;code&gt;0.19.3&lt;/code&gt;) across PostgreSQL 14, 15, 16, 17, and 18 on Linux (&lt;code&gt;x86_64&lt;/code&gt; and &lt;code&gt;aarch64&lt;/code&gt;, RHEL/Rocky EL8–EL10, Debian 12/13, Ubuntu 22.04/24.04).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DuckDB &lt;code&gt;2.0.0&lt;/code&gt; &amp;amp; &lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt; Alignment&lt;/strong&gt;: Maintaining ABI compatibility between &lt;code&gt;pg_mooncake&lt;/code&gt;, &lt;code&gt;pg_duckdb&lt;/code&gt;, and &lt;code&gt;duckdb_mooncake&lt;/code&gt; as DuckDB evolves its &lt;code&gt;TableCatalogEntry&lt;/code&gt;, &lt;code&gt;TableFilterSet&lt;/code&gt;, and &lt;code&gt;StorageExtension&lt;/code&gt; APIs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Correctness &amp;amp; Fail-Fast Guards&lt;/strong&gt;: Enforcing runtime &lt;code&gt;pg_duckdb&lt;/code&gt; version checks, LSN-consistent snapshot reads on columnstore tables, automatic &lt;code&gt;REPLICA IDENTITY FULL&lt;/code&gt; propagation across partitioned table hierarchies, and explicit &lt;code&gt;0A000&lt;/code&gt; errors on deprecated helpers.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dependency Security Hygiene&lt;/strong&gt;: Regularly auditing and upgrading Rust dependencies across all three lockfiles (&lt;code&gt;pg_mooncake&lt;/code&gt;, &lt;code&gt;moonlink&lt;/code&gt;, &lt;code&gt;duckdb_mooncake/moonlink_ffi&lt;/code&gt;) against the RustSec Advisory Database.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;historical-upstream-roadmap-v02&#34;&gt;Historical Upstream Roadmap (&lt;code&gt;v0.2&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The following four capabilities were outlined by Mooncake Labs for the &lt;code&gt;v0.2&lt;/code&gt; architecture:&lt;/p&gt;</description>
      </item>
    <item>
        <title>v0.1 Architecture (Delta Lake &amp; USING columnstore)</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/architecture/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/architecture/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;In &lt;code&gt;pg_mooncake v0.1&lt;/code&gt;, table metadata is stored inside PostgreSQL catalogs for transactional consistency, while columnstore data is written as &lt;strong&gt;Parquet&lt;/strong&gt; files with &lt;strong&gt;Delta Lake&lt;/strong&gt; metadata on local disk or object storage.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Archiving Large Postgres Tables</title>
        <link>https://mooncake.pgsty.com/docs/use-cases/archiving/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/use-cases/archiving/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&amp;rsquo;s columnstore mirror writes data as compressed Parquet files (on local disk or S3 / Cloudflare R2 object storage), providing cost-effective, durable history while PostgreSQL heap storage only maintains hot recent partitions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pattern&#34;&gt;Architecture Pattern&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The partition archiving pattern follows three rules:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Create a columnstore mirror&lt;/strong&gt; (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt;) of a time- or range-partitioned PostgreSQL table.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Periodically &lt;code&gt;DROP&lt;/code&gt; or &lt;code&gt;TRUNCATE&lt;/code&gt; old partitions&lt;/strong&gt; from the PostgreSQL rowstore once they age out of your hot operational window.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Retain complete history in the columnstore mirror&lt;/strong&gt;—&lt;code&gt;pg_mooncake&lt;/code&gt; intentionally ignores &lt;code&gt;DROP TABLE&lt;/code&gt; and &lt;code&gt;TRUNCATE&lt;/code&gt; events on child partitions of a partitioned source table, so all historical rows remain queryable in the columnstore!&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;walkthrough&#34;&gt;Step-by-Step Walkthrough&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Below is a complete example using a range-partitioned &lt;code&gt;transactions&lt;/code&gt; table.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Known Limitations</title>
        <link>https://mooncake.pgsty.com/docs/getting-started/known-limitations/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/getting-started/known-limitations/</guid>
        <description>&lt;p&gt;Before deploying &lt;code&gt;pg_mooncake&lt;/code&gt; (&lt;code&gt;v0.3.0&lt;/code&gt;) in production, review the following architectural constraints and known limitations.&lt;/p&gt;&#xA;&lt;h2 id=&#34;read-only-mirror&#34;&gt;1. Read-Only Columnstore Mirror Tables&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Tables created with &lt;code&gt;CALL mooncake.create_table(dst, src)&lt;/code&gt; use the &lt;code&gt;USING mooncake&lt;/code&gt; table access method and are &lt;strong&gt;read-only replicas&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Direct &lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;, or &lt;code&gt;COPY&lt;/code&gt; statements targeting the &lt;code&gt;USING mooncake&lt;/code&gt; table are rejected by PostgreSQL (&lt;code&gt;ERROR:cannot modify table &amp;quot;...&amp;quot; because it uses the mooncake access method&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Always execute DML operations against the source rowstore table (&lt;code&gt;src&lt;/code&gt;); changes replicate automatically via &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;replica-identity&#34;&gt;2. Primary Keys &amp;amp; &lt;code&gt;REPLICA IDENTITY FULL&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To replicate &lt;code&gt;UPDATE&lt;/code&gt; and &lt;code&gt;DELETE&lt;/code&gt; operations accurately over PostgreSQL logical replication, the source table must provide complete old-row identification in the WAL stream:&lt;/p&gt;</description>
      </item>
    <item>
        <title>License</title>
        <link>https://mooncake.pgsty.com/docs/about/license/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/about/license/</guid>
        <description>&lt;p&gt;The PGSTY Mooncake ecosystem preserves the exact upstream license terms of each repository created by Mooncake Labs, Inc.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;summary-by-repository&#34;&gt;Summary by Repository&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;wide expand td-table--wide&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Component&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Repository&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;License&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Notes&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/pg_mooncake&#34;&gt;&lt;code&gt;pgsty/pg_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;MIT&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Permissive open-source license (&lt;code&gt;Copyright (c) 2024 Mooncake Labs&lt;/code&gt;).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake&#34;&gt;&lt;code&gt;pgsty/duckdb_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;MIT&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Permissive open-source license (&lt;code&gt;Copyright (c) 2025 Mooncake Labs&lt;/code&gt;).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;moonlink&lt;/code&gt; (Engine)&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/moonlink&#34;&gt;&lt;code&gt;pgsty/moonlink&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;BSL-1.1&lt;/code&gt; + Exception&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Business Source License 1.1 with the &lt;strong&gt;&lt;code&gt;PG_MOONCAKE LINKING &amp;amp; DISTRIBUTION EXCEPTION&lt;/code&gt;&lt;/strong&gt;, converting to &lt;strong&gt;&lt;code&gt;Apache-2.0&lt;/code&gt;&lt;/strong&gt; on &lt;strong&gt;&lt;code&gt;2029-05-05&lt;/code&gt;&lt;/strong&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;moonlink&lt;/code&gt; (Client Crates)&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;moonlink_rpc&lt;/code&gt;, &lt;code&gt;moonlink_proto&lt;/code&gt;, &lt;code&gt;moonlink_error&lt;/code&gt;, &lt;code&gt;moonlink_table_metadata&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;MIT&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Explicitly licensed under MIT so &lt;code&gt;pg_mooncake&lt;/code&gt; and &lt;code&gt;duckdb_mooncake&lt;/code&gt; remain pure MIT works when linking against them.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Documentation Site&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/mooncake.pgsty.com&#34;&gt;&lt;code&gt;pgsty/mooncake.pgsty.com&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;CC-BY-4.0&lt;/code&gt; / &lt;code&gt;Apache-2.0&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Documentation prose under Creative Commons Attribution 4.0 International (&lt;code&gt;CC-BY-4.0&lt;/code&gt;); site build scripts under &lt;code&gt;Apache-2.0&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pg_mooncake--duckdb_mooncake--mit-license&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; &amp;amp; &lt;code&gt;duckdb_mooncake&lt;/code&gt; — MIT License&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Both &lt;a href=&#34;https://github.com/pgsty/pg_mooncake/blob/main/LICENSE&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake/blob/main/LICENSE&#34;&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/a&gt; are distributed under the &lt;strong&gt;MIT License&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Moonlink Ingestion Engine</title>
        <link>https://mooncake.pgsty.com/docs/intro/moonlink/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/moonlink/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Moonlink&lt;/strong&gt; (&lt;a href=&#34;https://github.com/pgsty/moonlink&#34;&gt;&lt;code&gt;pgsty/moonlink&lt;/code&gt;&lt;/a&gt;, current release &lt;strong&gt;&lt;code&gt;v0.0.1&lt;/code&gt;&lt;/strong&gt;) is a Rust library and standalone service designed to write and maintain real-time &lt;strong&gt;Apache Iceberg v2&lt;/strong&gt; and &lt;strong&gt;Delta Lake&lt;/strong&gt; tables for operational systems and event streams without Apache Spark or Kafka.&lt;/p&gt;&#xA;&lt;p&gt;Inside &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt;, Moonlink runs as an embedded PostgreSQL background worker (&lt;code&gt;mooncake_bgworker&lt;/code&gt;) communicating over a local Unix domain socket (&lt;code&gt;$PGDATA/pg_mooncake/moonlink.sock&lt;/code&gt;). It can also be compiled and deployed as a standalone HTTP REST and gRPC ingestion server (&lt;code&gt;moonlink_service&lt;/code&gt;).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Query Columnstore Table &amp; Supported Query Shapes</title>
        <link>https://mooncake.pgsty.com/docs/reference/query-columnstore/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/reference/query-columnstore/</guid>
        <description>&lt;p&gt;Columnstore mirror tables created with &lt;code&gt;CALL mooncake.create_table(dst, src)&lt;/code&gt; are queried using standard PostgreSQL &lt;code&gt;SELECT&lt;/code&gt; syntax. Behind the scenes, &lt;code&gt;pg_mooncake&lt;/code&gt; and &lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt; translate and route analytical scans to the embedded &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt; vectorized execution engine.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-it-works&#34;&gt;How Queries Work&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;When you query a &lt;code&gt;USING mooncake&lt;/code&gt; table:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;LSN Synchronization&lt;/strong&gt;: &lt;code&gt;duckdb_mooncake&lt;/code&gt; checks PostgreSQL&amp;rsquo;s current WAL write LSN and waits for &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; to ingest all committed transactions up to that LSN.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Segment Elimination&lt;/strong&gt;: DuckDB 2.0 inspects multi-file Parquet column min/max statistics to skip files and row groups that cannot match your &lt;code&gt;WHERE&lt;/code&gt; predicates.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero-Copy Hybrid Scan&lt;/strong&gt;: Flushed Parquet files, Roaring Bitmap deletion vectors, and the in-memory Apache Arrow write buffer are scanned in parallel across DuckDB worker threads (&lt;code&gt;duckdb.threads&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;You can verify that DuckDB is executing your query by running &lt;code&gt;EXPLAIN&lt;/code&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>v0.1 Get Started</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/get-started/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/get-started/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;historical-docker-image-obsolete&#34;&gt;Historical Docker Image (Obsolete)&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-719bd8fd-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-719bd8fd-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull mooncakelabs/pg_mooncake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --name mooncake-demo -e &lt;span class=&#34;nv&#34;&gt;POSTGRES_HOST_AUTH_METHOD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;trust -p 5432:5432 -d mooncakelabs/pg_mooncake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -it --rm --link mooncake-demo:postgres mooncakelabs/pg_mooncake psql -h postgres -U postgres&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;building-v01-from-source&#34;&gt;Building &lt;code&gt;v0.1&lt;/code&gt; from Source&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-719bd8fd-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-719bd8fd-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git submodule update --init --recursive&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make release -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;create-the-extension&#34;&gt;Create the Extension&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-719bd8fd-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-719bd8fd-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 Hello World (USING columnstore)</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/hello-world/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/hello-world/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;create-the-extension&#34;&gt;Create the Extension&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b4636292-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b4636292-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;create-a-using-columnstore-table-v01&#34;&gt;Create a &lt;code&gt;USING columnstore&lt;/code&gt; Table (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b4636292-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b4636292-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;BIGINT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;activity_type&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;TEXT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;activity_timestamp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TIMESTAMP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;columnstore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;inserts-updates-and-deletes&#34;&gt;Inserts, Updates, and Deletes&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b4636292-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b4636292-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;VALUES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;login&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2024-01-01 08:00:00&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;120&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;page_view&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2024-01-01 08:05:00&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;logout&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2024-01-01 08:30:00&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;error&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2024-01-01 08:13:00&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;180&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;DELETE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;transactions&#34;&gt;Transactions&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b4636292-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b4636292-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;BEGIN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;VALUES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;login&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2024-01-02 10:00:00&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;login&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2024-01-02 10:30:00&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ROLLBACK&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;joins&#34;&gt;Joins&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b4636292-fence-4&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b4636292-fence-4-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Between two columnstore tables&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ua&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;JOIN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ua2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ua&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ua2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Between a regular PostgreSQL table and a columnstore table&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;JOIN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_activity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Attribution</title>
        <link>https://mooncake.pgsty.com/docs/about/attribution/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/about/attribution/</guid>
        <description>&lt;h2 id=&#34;upstream-creators&#34;&gt;Upstream Creators&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/strong&gt; were created by &lt;a href=&#34;https://github.com/Mooncake-Labs&#34;&gt;&lt;strong&gt;Mooncake Labs&lt;/strong&gt;&lt;/a&gt;. All core architectural credit — including the hybrid rowstore + columnstore design, the Moonlink real-time Iceberg buffer engine, logical replication WAL ingestion, and the DuckDB execution bridge — belongs to the original Mooncake Labs authors and contributors.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;repository-lineage&#34;&gt;Repository Lineage&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;wide expand td-table--wide&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;PGSTY Repository&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Upstream Source&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Upstream Baseline Commit&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;PGSTY Release Tag&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/pg_mooncake&#34;&gt;&lt;code&gt;pgsty/pg_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/Mooncake-Labs/pg_mooncake&#34;&gt;&lt;code&gt;Mooncake-Labs/pg_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.2.0&lt;/code&gt; (&lt;code&gt;be17cd0&lt;/code&gt;) + post-0.2 upstream commits&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.3.0&lt;/code&gt; (&lt;code&gt;1a9cbfd65be9a6486d020120acb49ef0c6800d68&lt;/code&gt;)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake&#34;&gt;&lt;code&gt;pgsty/duckdb_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/Mooncake-Labs/duckdb_mooncake&#34;&gt;&lt;code&gt;Mooncake-Labs/duckdb_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ba79184&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.0.2&lt;/code&gt; (&lt;code&gt;49765a369ad88986916ce53c969ed2ce4ba66fac&lt;/code&gt;)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/moonlink&#34;&gt;&lt;code&gt;pgsty/moonlink&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/Mooncake-Labs/moonlink&#34;&gt;&lt;code&gt;Mooncake-Labs/moonlink&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;f2e1715&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.0.1&lt;/code&gt; (&lt;code&gt;b298ef7444890e3c8af5544e350232518bcfd8e5&lt;/code&gt;)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/pg_duckdb&#34;&gt;&lt;code&gt;pgsty/pg_duckdb&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/duckdb/pg_duckdb&#34;&gt;&lt;code&gt;duckdb/pg_duckdb&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v1.2.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v1.2.0&lt;/code&gt; (&lt;code&gt;8756099e267c47f0b86c24de4cf995327f1f4279&lt;/code&gt;)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;documentation-provenance--recovery&#34;&gt;Documentation Provenance &amp;amp; Recovery&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The original upstream documentation website (&lt;code&gt;https://docs.mooncake.dev/&lt;/code&gt;) was taken offline after the upstream project transitioned direction, and no public documentation source repository remained available on GitHub.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Download &amp; Install</title>
        <link>https://mooncake.pgsty.com/download/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/download/</guid>
        <description>&lt;p&gt;Pre-built native RPM and DEB packages for &lt;strong&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/strong&gt; (including the embedded &lt;strong&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/strong&gt; ingestion engine and &lt;strong&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/strong&gt; DuckDB extension) are published across &lt;strong&gt;16 Linux OS / CPU architecture targets&lt;/strong&gt; (&lt;code&gt;el8&lt;/code&gt;, &lt;code&gt;el9&lt;/code&gt;, &lt;code&gt;el10&lt;/code&gt;, &lt;code&gt;d12&lt;/code&gt;, &lt;code&gt;d13&lt;/code&gt;, &lt;code&gt;u22&lt;/code&gt;, &lt;code&gt;u24&lt;/code&gt;, &lt;code&gt;u26&lt;/code&gt; × &lt;code&gt;x86_64&lt;/code&gt; / &lt;code&gt;aarch64&lt;/code&gt;) for &lt;strong&gt;PostgreSQL 14, 15, 16, 17, and 18&lt;/strong&gt; (80 binary packages across 5 PostgreSQL major versions).&lt;/p&gt;&#xA;&lt;div class=&#34;td-content-cards td-content-cards--auto&#34; id=&#34;td-cards-0588a98b-0&#34;&gt;&#xA;&#xA;&lt;article id=&#34;td-card-0588a98b-cards-0-0&#34; class=&#34;td-content-card&#34;&gt;&#xA;&lt;div class=&#34;td-content-card__body&#34;&gt;&#xA;&lt;div class=&#34;td-content-card__head&#34;&gt;&lt;i class=&#34;fa-solid fa-table-columns td-content-card__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;a class=&#34;td-content-card__title&#34; href=&#34;#pg_mooncake&#34;&gt;pg_mooncake&lt;/a&gt;&lt;span class=&#34;td-content-card__badge&#34;&gt;v0.3.0&lt;/span&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;td-content-card__description&#34;&gt;&lt;p&gt;PostgreSQL Table Access Method (&lt;code&gt;USING mooncake&lt;/code&gt;) and columnstore mirror procedures (&lt;code&gt;mooncake.create_table&lt;/code&gt;, &lt;code&gt;create_snapshot&lt;/code&gt;, &lt;code&gt;optimize_table&lt;/code&gt;, &lt;code&gt;list_tables&lt;/code&gt;), built with &lt;code&gt;pgrx 0.19.3&lt;/code&gt; for PostgreSQL 14–18.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/article&gt;&#xA;&lt;article id=&#34;td-card-0588a98b-cards-0-1&#34; class=&#34;td-content-card&#34;&gt;&#xA;&lt;div class=&#34;td-content-card__body&#34;&gt;&#xA;&lt;div class=&#34;td-content-card__head&#34;&gt;&lt;i class=&#34;fa-solid fa-arrows-rotate td-content-card__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;a class=&#34;td-content-card__title&#34; href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;moonlink&lt;/a&gt;&lt;span class=&#34;td-content-card__badge&#34;&gt;v0.0.1&lt;/span&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;td-content-card__description&#34;&gt;&lt;p&gt;Rust real-time ingestion engine embedded inside &lt;code&gt;pg_mooncake&lt;/code&gt;&amp;rsquo;s background worker (and available as a standalone HTTP/RPC server), managing logical replication, Arrow write buffers, Roaring deletion vectors, and Apache Iceberg v2 snapshots.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/article&gt;&#xA;&lt;article id=&#34;td-card-0588a98b-cards-0-2&#34; class=&#34;td-content-card&#34;&gt;&#xA;&lt;div class=&#34;td-content-card__body&#34;&gt;&#xA;&lt;div class=&#34;td-content-card__head&#34;&gt;&lt;i class=&#34;fa-solid fa-database td-content-card__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;a class=&#34;td-content-card__title&#34; href=&#34;https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/&#34;&gt;duckdb_mooncake&lt;/a&gt;&lt;span class=&#34;td-content-card__badge&#34;&gt;v0.0.2&lt;/span&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;td-content-card__description&#34;&gt;&lt;p&gt;DuckDB 2.0 storage extension bundled with &lt;code&gt;pg_mooncake&lt;/code&gt; into a local extension repository (&lt;code&gt;mooncake.extension_repository&lt;/code&gt;), enabling &lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt; to scan Moonlink tables with multi-file Parquet statistics pruning.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/article&gt;&#xA;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>duckdb_mooncake &amp; DuckDB 2.0 Integration</title>
        <link>https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/</guid>
        <description>&lt;p&gt;&lt;strong&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/strong&gt; (&lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake&#34;&gt;&lt;code&gt;pgsty/duckdb_mooncake&lt;/code&gt;&lt;/a&gt;, current release &lt;strong&gt;&lt;code&gt;v0.0.2&lt;/code&gt;&lt;/strong&gt;, &lt;code&gt;MIT&lt;/code&gt; license) is a C++ and Rust FFI storage extension for &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt;. It allows DuckDB (both standalone and embedded inside PostgreSQL via &lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt;) to attach directly to a &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; metadata directory and execute vectorized scans over Moonlink tables.&lt;/p&gt;&#xA;&lt;h2 id=&#34;role&#34;&gt;Role Inside &lt;code&gt;pg_mooncake 0.3.0&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;When &lt;code&gt;pg_mooncake&lt;/code&gt; executes a query against a &lt;code&gt;USING mooncake&lt;/code&gt; table inside PostgreSQL, &lt;code&gt;pg_duckdb&lt;/code&gt; delegates the table scan to DuckDB. &lt;code&gt;pg_mooncake&lt;/code&gt; automatically initializes the DuckDB session by running:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Apache Iceberg v2 &amp; Object Storage Configuration</title>
        <link>https://mooncake.pgsty.com/docs/reference/iceberg/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/reference/iceberg/</guid>
        <description>&lt;p&gt;Every columnstore mirror table in &lt;code&gt;pg_mooncake&lt;/code&gt; (&lt;code&gt;v0.3.0&lt;/code&gt;) is backed by &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt;, which writes data as standard &lt;strong&gt;Parquet&lt;/strong&gt; files and maintains &lt;strong&gt;Apache Iceberg v2&lt;/strong&gt; table metadata.&lt;/p&gt;&#xA;&lt;p&gt;By default, Moonlink writes files to the local filesystem under &lt;code&gt;$PGDATA/pg_mooncake/&lt;/code&gt;. You can configure &lt;code&gt;pg_mooncake&lt;/code&gt; to write directly to &lt;strong&gt;Amazon S3&lt;/strong&gt;, &lt;strong&gt;Cloudflare R2&lt;/strong&gt;, &lt;strong&gt;MinIO&lt;/strong&gt;, or &lt;strong&gt;Google Cloud Storage (GCS)&lt;/strong&gt; so external engines (DuckDB, Apache Spark, Trino, Snowflake, PyIceberg) can query your PostgreSQL tables directly from object storage.&lt;/p&gt;</description>
      </item>
    <item>
        <title>The Postgres Lakehouse</title>
        <link>https://mooncake.pgsty.com/docs/use-cases/lakehouse/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/use-cases/lakehouse/</guid>
        <description>&lt;p&gt;The &lt;strong&gt;Lakehouse&lt;/strong&gt; architecture stores data once in open table formats (&lt;strong&gt;Apache Iceberg&lt;/strong&gt; or &lt;strong&gt;Delta Lake&lt;/strong&gt;) on object storage so multiple compute engines—PostgreSQL, DuckDB, Apache Spark, Snowflake, Trino, and Python (Polars / PyIceberg)—can share the same dataset without copying it.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; makes PostgreSQL a first-class citizen of your lakehouse in &lt;strong&gt;both directions&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Postgres $\rightarrow$ Iceberg Lakehouse (Zero-ETL Export)&lt;/strong&gt;: Replicate operational PostgreSQL tables directly into Apache Iceberg v2 tables on S3, Cloudflare R2, or local storage via &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lakehouse $\rightarrow$ Postgres (Direct In-DB Scan)&lt;/strong&gt;: Query external Parquet, Apache Iceberg, and Delta Lake tables directly from PostgreSQL and join them with live operational tables via &lt;a href=&#34;https://mooncake.pgsty.com/docs/reference/query-data-lake/&#34;&gt;&lt;code&gt;pg_duckdb&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;export&#34;&gt;1. Export Operational Postgres Tables as Apache Iceberg v2&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Traditionally, landing PostgreSQL data in Apache Iceberg required deploying Debezium, Kafka, Schema Registry, and Spark/Flink consumers. With &lt;code&gt;pg_mooncake&lt;/code&gt;, it takes three SQL commands:&lt;/p&gt;</description>
      </item>
    <item>
        <title>v0.1 Cloud Storage (mooncake.create_secret)</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/cloud-storage/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/cloud-storage/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Current &lt;code&gt;v0.3.0&lt;/code&gt; Cloud Storage Setup&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;In &lt;code&gt;v0.2&lt;/code&gt; and &lt;code&gt;v0.3.0&lt;/code&gt;, credentials are inserted into &lt;code&gt;duckdb.secrets&lt;/code&gt; rather than &lt;code&gt;mooncake.create_secret&lt;/code&gt;. See &lt;a href=&#34;https://mooncake.pgsty.com/docs/reference/iceberg/&#34;&gt;Iceberg &amp;amp; Object Storage&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 on Neon Postgres</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/neon-postgres/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/neon-postgres/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt; was offered as an experimental extension on &lt;a href=&#34;https://neon.tech&#34;&gt;Neon&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;enable-the-extension-on-neon-v01&#34;&gt;Enable the Extension on Neon (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-db25f2ab-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-db25f2ab-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;neon&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;allow_unstable_extensions&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;true&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;cloud-storage-requirement&#34;&gt;Cloud Storage Requirement&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Because Neon does not allow extensions to persist columnstore files on local compute disk, using &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; on Neon required configuring an external S3 or Cloudflare R2 bucket as described in &lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/cloud-storage/&#34;&gt;v0.1 Cloud Storage&lt;/a&gt;, and disabling Neon&amp;rsquo;s scale-to-zero feature to preserve local metadata caches.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Log Analytics with OpenTelemetry</title>
        <link>https://mooncake.pgsty.com/docs/use-cases/logging/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/use-cases/logging/</guid>
        <description>&lt;p&gt;PostgreSQL is rarely used for large-scale log analytics because uncompressed heap tables and indexes grow expensive quickly, and full-table scans over millions of log entries are slow.&lt;/p&gt;&#xA;&lt;p&gt;With &lt;code&gt;pg_mooncake&lt;/code&gt;, you can combine &lt;strong&gt;partitioned PostgreSQL log ingestion&lt;/strong&gt; with an &lt;strong&gt;object-storage-backed columnstore mirror&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Low storage cost&lt;/strong&gt;: Historical logs are compressed into columnar Parquet files on S3, Cloudflare R2, or local disk.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Simple self-hosting&lt;/strong&gt;: Just PostgreSQL + object storage—no Elasticsearch or ClickHouse cluster required.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fast vectorized scans&lt;/strong&gt;: DuckDB 2.0 scans millions of log records per second with segment elimination on timestamps.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;implementation&#34;&gt;Implementation Pattern&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Combine a time-partitioned rowstore table for log ingestion with a &lt;code&gt;USING mooncake&lt;/code&gt; columnstore mirror for analytical queries:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Query Your Data Lake in Postgres</title>
        <link>https://mooncake.pgsty.com/docs/reference/query-data-lake/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/reference/query-data-lake/</guid>
        <description>&lt;p&gt;Because &lt;code&gt;pg_mooncake&lt;/code&gt; (&lt;code&gt;v0.3.0&lt;/code&gt;) embeds &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt; via &lt;strong&gt;&lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt;&lt;/strong&gt;, you can query external files in your data lake (local disk, S3, Cloudflare R2, GCS, HTTP, or HuggingFace &lt;code&gt;hf://&lt;/code&gt; datasets) directly from PostgreSQL without loading them into heap tables first.&lt;/p&gt;&#xA;&lt;h2 id=&#34;formats&#34;&gt;Supported External Formats&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Apache Parquet&lt;/strong&gt; (&lt;code&gt;duckdb.read_parquet&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;CSV / TSV&lt;/strong&gt; (&lt;code&gt;duckdb.read_csv&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;JSON / NDJSON&lt;/strong&gt; (&lt;code&gt;duckdb.read_json&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Apache Iceberg&lt;/strong&gt; (&lt;code&gt;duckdb.iceberg_scan&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Delta Lake&lt;/strong&gt; (&lt;code&gt;duckdb.delta_scan&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;&lt;code&gt;v0.2&lt;/code&gt; / &lt;code&gt;v0.3&lt;/code&gt; (&lt;code&gt;duckdb.*&lt;/code&gt;) vs Legacy &lt;code&gt;v0.1&lt;/code&gt; (&lt;code&gt;mooncake.*&lt;/code&gt;) Functions&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;In &lt;code&gt;pg_mooncake v0.2&lt;/code&gt; and &lt;code&gt;v0.3.0&lt;/code&gt;, external file readers are provided directly by &lt;code&gt;pg_duckdb&lt;/code&gt; (&lt;code&gt;duckdb.read_parquet&lt;/code&gt;, &lt;code&gt;duckdb.read_csv&lt;/code&gt;, &lt;code&gt;duckdb.iceberg_scan&lt;/code&gt;, &lt;code&gt;duckdb.delta_scan&lt;/code&gt;). For the legacy &lt;code&gt;v0.1&lt;/code&gt; &lt;code&gt;mooncake.read_parquet&lt;/code&gt; syntax, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/query-external-files/&#34;&gt;v0.1 Query External Files&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Trademark Policy</title>
        <link>https://mooncake.pgsty.com/docs/about/trademark/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/about/trademark/</guid>
        <description>&lt;h2 id=&#34;independence-statement&#34;&gt;Independence Statement&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;code&gt;mooncake.pgsty.com&lt;/code&gt;&lt;/strong&gt; and the repositories under &lt;a href=&#34;https://github.com/pgsty&#34;&gt;&lt;code&gt;github.com/pgsty&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;pgsty/pg_mooncake&lt;/code&gt;, &lt;code&gt;pgsty/duckdb_mooncake&lt;/code&gt;, &lt;code&gt;pgsty/moonlink&lt;/code&gt;) are maintained independently by &lt;a href=&#34;https://pigsty.io&#34;&gt;&lt;strong&gt;PGSTY (Pigsty)&lt;/strong&gt;&lt;/a&gt; for the PostgreSQL open-source community.&lt;/p&gt;&#xA;&lt;p&gt;This site and the packages distributed by Pigsty / PGEXT are &lt;strong&gt;not&lt;/strong&gt; affiliated with, endorsed by, or sponsored by Mooncake Labs, Inc.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;third-party-trademarks&#34;&gt;Third-Party Trademarks&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mooncake&lt;/strong&gt;, &lt;strong&gt;pg_mooncake&lt;/strong&gt;, &lt;strong&gt;duckdb_mooncake&lt;/strong&gt;, and &lt;strong&gt;Moonlink&lt;/strong&gt; are names originated by Mooncake Labs, Inc. They are used on this website solely for nominative, descriptive identification of the open-source PostgreSQL and DuckDB extensions and their compatibility lineage.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; and &lt;strong&gt;Postgres&lt;/strong&gt; are registered trademarks of the PostgreSQL Community Association of Canada.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DuckDB&lt;/strong&gt; is a trademark of the DuckDB Foundation / DuckDB Labs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Apache Iceberg&lt;/strong&gt;, &lt;strong&gt;Apache Parquet&lt;/strong&gt;, &lt;strong&gt;Apache Arrow&lt;/strong&gt;, and &lt;strong&gt;Apache&lt;/strong&gt; are trademarks of the Apache Software Foundation.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Delta Lake&lt;/strong&gt; is a trademark of LF Projects, LLC.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Pigsty&lt;/strong&gt; and &lt;strong&gt;PGSTY&lt;/strong&gt; are trademarks of Ruohang Feng (&lt;code&gt;@Vonng&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>v0.1 Reference Overview</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/reference/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/reference/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/columnstore-ddl/&#34;&gt;v0.1 Columnstore DDL (&lt;code&gt;USING columnstore&lt;/code&gt;)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/columnstore-metadata/&#34;&gt;v0.1 Querying Columnstore Outside Postgres (&lt;code&gt;mooncake.columnstore_tables&lt;/code&gt;)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/configurations/&#34;&gt;v0.1 GUC Configurations (&lt;code&gt;mooncake.maximum_memory&lt;/code&gt;, &lt;code&gt;mooncake.maximum_threads&lt;/code&gt;)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/load-data/&#34;&gt;v0.1 Load Data (&lt;code&gt;COPY&lt;/code&gt; &amp;amp; &lt;code&gt;mooncake.read_parquet&lt;/code&gt;)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/query-external-files/&#34;&gt;v0.1 Query External Files (&lt;code&gt;mooncake.read_parquet&lt;/code&gt;, &lt;code&gt;mooncake.read_csv&lt;/code&gt;, &lt;code&gt;iceberg_scan&lt;/code&gt;, &lt;code&gt;delta_scan&lt;/code&gt;)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/query-shapes/&#34;&gt;v0.1 Supported Queries &amp;amp; Query Shapes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>v0.1 vs v0.2 &amp; v0.3 Evolution</title>
        <link>https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; has evolved through three major architectural milestones:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;v0.1&lt;/code&gt; (Legacy Delta Lake Engine)&lt;/strong&gt;: Introduced direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; tables backed by Delta Lake and DuckDB (&lt;code&gt;pg_duckdb&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;v0.2&lt;/code&gt; (Moonlink &amp;amp; Apache Iceberg Redesign)&lt;/strong&gt;: Replaced direct columnstore writes with a &lt;strong&gt;columnstore mirror&lt;/strong&gt; architecture (&lt;code&gt;CALL mooncake.create_table(dst, src)&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) powered by &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; logical replication, in-memory Arrow write buffers, Roaring deletion vectors, and Apache Iceberg v2 metadata.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt; (PGSTY Maintained Release)&lt;/strong&gt;: Upgraded &lt;code&gt;pg_mooncake&lt;/code&gt; to &lt;code&gt;pgrx 0.19.3&lt;/code&gt; (PostgreSQL 14–18), ported &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/&#34;&gt;&lt;code&gt;duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/a&gt; to &lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt; and &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt;, fixed Moonlink (&lt;code&gt;v0.0.1&lt;/code&gt;) snapshot LSN hangs and partitioned table replica identity handling, and patched 20+ RustSec dependency advisories.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Looking for &lt;code&gt;v0.1&lt;/code&gt; Documentation?&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Complete documentation for the legacy &lt;code&gt;v0.1&lt;/code&gt; release (&lt;code&gt;USING columnstore&lt;/code&gt;, &lt;code&gt;mooncake.create_secret&lt;/code&gt;, &lt;code&gt;mooncake.columnstore_tables&lt;/code&gt;, &lt;code&gt;mooncake.read_parquet&lt;/code&gt;) is preserved in the &lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/&#34;&gt;v0.1 Archive (Delta Lake)&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 Columnstore DDL (USING columnstore)</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/columnstore-ddl/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/columnstore-ddl/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;create-columnstore-table-v01&#34;&gt;Create Columnstore Table (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In &lt;code&gt;v0.1&lt;/code&gt;, columnstore tables were created directly with the &lt;code&gt;USING columnstore&lt;/code&gt; clause:&lt;/p&gt;</description>
      </item>
    <item>
        <title>SBOM &amp; Security Audit</title>
        <link>https://mooncake.pgsty.com/docs/about/sbom/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/about/sbom/</guid>
        <description>&lt;p&gt;This page documents the exact submodule pin matrix (&lt;code&gt;versions.json&lt;/code&gt;) and the dependency security audit performed for &lt;strong&gt;&lt;code&gt;pg_mooncake v0.3.0&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;moonlink v0.0.1&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;component--submodule-pin-matrix-versionsjson&#34;&gt;Component &amp;amp; Submodule Pin Matrix (&lt;code&gt;versions.json&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;pgsty/pg_mooncake&lt;/code&gt; records its exact submodule and upstream dependency pins in &lt;a href=&#34;https://github.com/pgsty/pg_mooncake/blob/main/versions.json&#34;&gt;&lt;code&gt;versions.json&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;wide expand td-table--wide&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Component&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Path&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Repository&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Tag / Branch&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Commit SHA&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;License&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/pg_mooncake&#34;&gt;&lt;code&gt;pgsty/pg_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;1a9cbfd65be9a6486d020120acb49ef0c6800d68&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;MIT&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake&#34;&gt;&lt;code&gt;pgsty/duckdb_mooncake&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.0.2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;49765a369ad88986916ce53c969ed2ce4ba66fac&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;MIT&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;duckdb&lt;/code&gt;&lt;/strong&gt; (nested)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;duckdb_mooncake/duckdb&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/duckdb/duckdb&#34;&gt;&lt;code&gt;duckdb/duckdb&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v2.0.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;d54cbbe3df17e8e5ce68312f483b4155836112aa&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;MIT&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt; (&lt;code&gt;duckdb_mooncake/moonlink&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/moonlink&#34;&gt;&lt;code&gt;pgsty/moonlink&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.0.1&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;b298ef7444890e3c8af5544e350232518bcfd8e5&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;BSL-1.1&lt;/code&gt; + Exception (&lt;code&gt;MIT&lt;/code&gt; client crates)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;pg_duckdb&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_duckdb&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/pgsty/pg_duckdb&#34;&gt;&lt;code&gt;pgsty/pg_duckdb&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v1.2.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;8756099e267c47f0b86c24de4cf995327f1f4279&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;MIT&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;rust-postgres&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rust-postgres&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://github.com/sfackler/rust-postgres&#34;&gt;&lt;code&gt;sfackler/rust-postgres&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;master&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;14c8e599f5551a8caa96ff5023685a6f537a1455&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Apache-2.0 OR MIT&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;core-rust-toolchain--framework-pins&#34;&gt;Core Rust Toolchain &amp;amp; Framework Pins&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Dependency&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Version&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Role&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;pgrx&lt;/code&gt;&lt;/strong&gt; / &lt;strong&gt;&lt;code&gt;cargo-pgrx&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;0.19.3&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL extension framework for Rust (PostgreSQL 14–18).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;iceberg&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;0.6.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Apache Iceberg table metadata and catalog client in &lt;code&gt;moonlink&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;arrow&lt;/code&gt;&lt;/strong&gt; / &lt;strong&gt;&lt;code&gt;parquet&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;55.2.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Columnar memory format and Parquet writer in &lt;code&gt;moonlink&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;datafusion&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;48.0.1&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Expression evaluation and pruning in &lt;code&gt;moonlink&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;opendal&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;0.53.1&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Unified object storage abstraction (&lt;code&gt;fs&lt;/code&gt;, &lt;code&gt;s3&lt;/code&gt;, &lt;code&gt;gcs&lt;/code&gt;, &lt;code&gt;azblob&lt;/code&gt;).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;tonic&lt;/code&gt;&lt;/strong&gt; / &lt;strong&gt;&lt;code&gt;prost&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;0.14.5&lt;/code&gt; / &lt;code&gt;0.14.3&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;gRPC / IPC protocol serialization between &lt;code&gt;pg_mooncake&lt;/code&gt; and &lt;code&gt;moonlink&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;tokio&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;1.53.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Async runtime for background ingestion and object store I/O.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2026-11-05-cargo-dependency-security-audit&#34;&gt;2026-11-05 Cargo Dependency Security Audit&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;All three Cargo workspaces were audited using &lt;code&gt;cargo-audit 0.22.2&lt;/code&gt; against the RustSec Advisory Database (commit &lt;code&gt;965bf9ad083b58e6340d65829d85217b18be9290&lt;/code&gt;, 927 advisories loaded).&lt;/p&gt;</description>
      </item>
    <item>
        <title>v0.1 Querying Columnstore Outside Postgres</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/columnstore-metadata/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/columnstore-metadata/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Current &lt;code&gt;v0.3.0&lt;/code&gt; Metadata Function&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;In &lt;code&gt;v0.2&lt;/code&gt; and &lt;code&gt;v0.3.0&lt;/code&gt;, use &lt;code&gt;SELECT * FROM mooncake.list_tables();&lt;/code&gt; to inspect table LSNs and Apache Iceberg v2 warehouse locations.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 GUC Configurations</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/configurations/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/configurations/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;v01-guc-parameters&#34;&gt;&lt;code&gt;v0.1&lt;/code&gt; GUC Parameters&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-ebf694ed-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;15&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-ebf694ed-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Default cloud storage bucket&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DATABASE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;database_name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;default_bucket&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://my-bucket&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Memory allocated to DuckDB (v0.1.1+, default 4GB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DATABASE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;database_name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;maximum_memory&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;6GB&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reset_duckdb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Number of threads for DuckDB (v0.1.1+, default -1 = all cores)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DATABASE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;database_name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;maximum_threads&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Local write cache (default true)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DATABASE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;database_name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable_local_cache&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Memory cache for Parquet metadata (default true)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DATABASE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;database_name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable_memory_metadata_cache&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 Load Data</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/load-data/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/load-data/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;from-postgresql-heap-tables-v01&#34;&gt;From PostgreSQL Heap Tables (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-003069b4-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-003069b4-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_rowstore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;from-parquet-csv-or-json-files-v01&#34;&gt;From Parquet, CSV, or JSON Files (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-003069b4-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;12&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-003069b4-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Using COPY&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;COPY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://bucket/file.parquet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;COPY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://bucket/folder/*.parquet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;COPY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://bucket/data.csv&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WITH&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FORMAT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;csv&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HEADER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Using INSERT with mooncake.read_parquet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mooncake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read_parquet&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://bucket/file.parquet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;TEXT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;created_at&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TIMESTAMP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;from-iceberg-delta-lake-or-huggingface-v01&#34;&gt;From Iceberg, Delta Lake, or HuggingFace (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-003069b4-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;10&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-003069b4-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Iceberg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iceberg_scan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://bucket/table&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;TEXT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;created_at&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TIMESTAMP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Delta Lake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;delta_scan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://bucket/table&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;TEXT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;created_at&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TIMESTAMP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- HuggingFace&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;COPY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;users_columnstore&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;hf://datasets/OpenLeecher/lmsys_chat_1m_clean/data/train-00000-of-00004.parquet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 Query External Files</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/query-external-files/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/query-external-files/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Current &lt;code&gt;v0.3.0&lt;/code&gt; External File Readers&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;In &lt;code&gt;v0.2&lt;/code&gt; and &lt;code&gt;v0.3.0&lt;/code&gt;, use &lt;code&gt;duckdb.read_parquet&lt;/code&gt;, &lt;code&gt;duckdb.read_csv&lt;/code&gt;, &lt;code&gt;duckdb.iceberg_scan&lt;/code&gt;, and &lt;code&gt;duckdb.delta_scan&lt;/code&gt; as documented in &lt;a href=&#34;https://mooncake.pgsty.com/docs/reference/query-data-lake/&#34;&gt;Query Your Data Lake in Postgres&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 Supported Queries &amp; Query Shapes</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/query-shapes/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/query-shapes/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;For the updated &lt;code&gt;v0.3.0&lt;/code&gt; guide on query shapes and DuckDB 2.0 execution, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/reference/query-columnstore/&#34;&gt;Query Columnstore &amp;amp; Query Shapes&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>v0.1 Data Archiving</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/archiving/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/archiving/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Current &lt;code&gt;v0.3.0&lt;/code&gt; Partition Archiving Pattern&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;In &lt;code&gt;v0.2&lt;/code&gt; and &lt;code&gt;v0.3.0&lt;/code&gt;, you no longer need manual &lt;code&gt;INSERT INTO ... DELETE FROM&lt;/code&gt; batch scripts—simply mirror a partitioned table with &lt;code&gt;CALL mooncake.create_table&lt;/code&gt; and &lt;code&gt;DROP&lt;/code&gt; old partitions. See &lt;a href=&#34;https://mooncake.pgsty.com/docs/use-cases/archiving/&#34;&gt;Archiving Large Postgres Tables&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 Operational Analytics (Trigger &#43; pg_cron Staging)</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/operational-analytics/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/operational-analytics/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Replaced by &lt;code&gt;mooncake.create_table&lt;/code&gt; in &lt;code&gt;v0.2&lt;/code&gt; / &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;In &lt;code&gt;v0.1&lt;/code&gt;, syncing a rowstore table to a &lt;code&gt;USING columnstore&lt;/code&gt; table required triggers, a staging table, and a &lt;code&gt;pg_cron&lt;/code&gt; job. In &lt;code&gt;v0.2&lt;/code&gt; and &lt;code&gt;v0.3.0&lt;/code&gt;, all of this is replaced by a single &lt;code&gt;CALL mooncake.create_table(&#39;orders_analytics&#39;, &#39;orders&#39;);&lt;/code&gt;. See &lt;a href=&#34;https://mooncake.pgsty.com/docs/use-cases/real-time-analytics/&#34;&gt;Real-Time Operational Analytics&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>v0.1 Data Warehousing &amp; dbt</title>
        <link>https://mooncake.pgsty.com/docs/v0.1/warehousing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/v0.1/warehousing/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Legacy &lt;code&gt;pg_mooncake v0.1&lt;/code&gt; Archive (Delta Lake Engine)&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This page documents &lt;strong&gt;&lt;code&gt;pg_mooncake v0.1&lt;/code&gt;&lt;/strong&gt;, which used direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; DDL and Delta Lake storage. Starting in &lt;code&gt;v0.2&lt;/code&gt; and PGSTY&amp;rsquo;s &lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt; release, &lt;code&gt;pg_mooncake&lt;/code&gt; uses &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; real-time columnstore mirrors (&lt;code&gt;CALL mooncake.create_table&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) and Apache Iceberg v2. For current documentation, see &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;Introduction&lt;/a&gt; and &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/&#34;&gt;v0.1 vs v0.2 &amp;amp; v0.3&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;daily-aggregation-pipeline-v01&#34;&gt;Daily Aggregation Pipeline (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7f8f2dfb-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7f8f2dfb-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;daily_sales_summary&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;DATE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;product_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;category_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;region_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;total_quantity&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;total_revenue&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;DECIMAL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;columnstore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;integration-with-dbt-v01&#34;&gt;Integration with dbt (&lt;code&gt;v0.1&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In &lt;code&gt;v0.1&lt;/code&gt;, dbt models could target &lt;code&gt;USING columnstore&lt;/code&gt; by setting &lt;code&gt;default_table_access_method&lt;/code&gt; in an &lt;code&gt;on-run-start&lt;/code&gt; hook:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Page Not Found</title>
        <link>https://mooncake.pgsty.com/404/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/404/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;page-not-found&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The page you are looking for has moved, been deleted, or does not exist. Use the search bar (&lt;kbd&gt;⌘&lt;/kbd&gt;&lt;kbd&gt;K&lt;/kbd&gt;) or return to the &lt;a href=&#34;https://mooncake.pgsty.com/docs/&#34;&gt;Mooncake Documentation&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake 0.3.0: First PGSTY Release with DuckDB 2.0, pgrx 0.19.3, and PostgreSQL 14–18 Support</title>
        <link>https://mooncake.pgsty.com/blog/release/pg-mooncake-0.3.0/</link>
        <pubDate>Thu, 05 Nov 2026 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/release/pg-mooncake-0.3.0/</guid>
        <description>&lt;p&gt;&lt;strong&gt;&lt;code&gt;pg_mooncake 0.3.0&lt;/code&gt;&lt;/strong&gt; — released alongside &lt;strong&gt;&lt;code&gt;duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;moonlink v0.0.1&lt;/code&gt;&lt;/strong&gt; — is the first release of the Mooncake real-time analytics suite maintained by &lt;a href=&#34;https://github.com/pgsty&#34;&gt;&lt;strong&gt;PGSTY&lt;/strong&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/pg_mooncake/releases/tag/v0.3.0&#34;&gt;&lt;code&gt;pgsty/pg_mooncake v0.3.0&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake/releases/tag/v0.0.2&#34;&gt;&lt;code&gt;pgsty/duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/moonlink/releases/tag/v0.0.1&#34;&gt;&lt;code&gt;pgsty/moonlink v0.0.1&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;BSL-1.1&lt;/code&gt; with &lt;code&gt;PG_MOONCAKE LINKING &amp;amp; DISTRIBUTION EXCEPTION&lt;/code&gt;, client crates &lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Binary RPM and DEB packages for &lt;strong&gt;PostgreSQL 14, 15, 16, 17, and 18&lt;/strong&gt; across &lt;strong&gt;RHEL / Rocky / AlmaLinux 8, 9, 10&lt;/strong&gt; and &lt;strong&gt;Debian 12/13, Ubuntu 22.04/24.04&lt;/strong&gt; (&lt;code&gt;x86_64&lt;/code&gt; and &lt;code&gt;aarch64&lt;/code&gt;) are available through the &lt;a href=&#34;https://mooncake.pgsty.com/download/&#34;&gt;PGEXT repository&lt;/a&gt; and &lt;a href=&#34;https://pigsty.io/ext/e/pg_mooncake&#34;&gt;Pigsty&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Porting pg_mooncake and duckdb_mooncake to DuckDB 2.0, pg_duckdb 1.2.0, and pgrx 0.19.3</title>
        <link>https://mooncake.pgsty.com/blog/post/duckdb-2-adaptation/</link>
        <pubDate>Thu, 05 Nov 2026 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/duckdb-2-adaptation/</guid>
        <description>&lt;p&gt;When Mooncake Labs paused public updates to &lt;a href=&#34;https://github.com/Mooncake-Labs/pg_mooncake&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; after &lt;code&gt;v0.2.0&lt;/code&gt;, the extension was pinned to an earlier DuckDB &lt;code&gt;1.3.x&lt;/code&gt; / &lt;code&gt;pg_duckdb&lt;/code&gt; snapshot and &lt;code&gt;pgrx 0.12&lt;/code&gt;. Meanwhile, the PostgreSQL ecosystem moved forward to &lt;strong&gt;PostgreSQL 18&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;pgrx 0.19.3&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt;&lt;/strong&gt; (which embeds &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt;).&lt;/p&gt;&#xA;&lt;p&gt;This article walks through the engineering changes required to bring the entire Mooncake stack — &lt;strong&gt;&lt;code&gt;pg_mooncake v0.3.0&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;moonlink v0.0.1&lt;/code&gt;&lt;/strong&gt; — onto &lt;strong&gt;DuckDB &lt;code&gt;2.0.0&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;pgrx 0.19.3&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Mooncake is joining Databricks!</title>
        <link>https://mooncake.pgsty.com/blog/post/mooncake-and-databricks/</link>
        <pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/mooncake-and-databricks/</guid>
        <description>&lt;p&gt;Thirteen months ago, we started Mooncake to bring the data intelligence stack that powers giants like OpenAI to every vibe-coded app and developer. From first prompt to IPO.&lt;/p&gt;&#xA;&lt;p&gt;Today, we&amp;rsquo;re joining forces with Databricks.&#xA;The mission continues: make &lt;a href=&#34;https://www.databricks.com/product/lakebase&#34;&gt;Lakebase&lt;/a&gt; and the Lakehouse feel like one.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;For a decade, we thought the final form of a database was one that could do it all. Fast updates, transactions, analytics. For database people, this was HTAP. It never quite landed. Zhou and Cheng built it. Pranav tried to sell it. It was hard.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Mooncake: a real-time storage engine for Apache Iceberg</title>
        <link>https://mooncake.pgsty.com/blog/post/white-paper/</link>
        <pubDate>Mon, 11 Aug 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/white-paper/</guid>
        <description>&lt;p&gt;This technical overview assumes familiarity with &lt;a href=&#34;https://iceberg.apache.org/&#34;&gt;Apache Iceberg&lt;/a&gt;, an open table format for analytical datasets. Iceberg is part of the general &amp;ldquo;Lakehouse&amp;rdquo; movement, where users:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Store large datasets using open file formats (Parquet + Metadata) in Object Storage&lt;/li&gt;&#xA;&lt;li&gt;Query them directly by engines like Spark, Trino, Flink, and DuckDB using SQL&lt;/li&gt;&#xA;&lt;li&gt;Get the benefits of &amp;lsquo;database features&amp;rsquo; like schema evolution &amp;amp; time-travel&lt;/li&gt;&#xA;&lt;li&gt;Scale practically infinitely, and aren&amp;rsquo;t locked into a vendor&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Iceberg was built for slow-changing data + batch analytics &amp;amp; processing. That world is pretty clear and only improving with engines getting better at reading open formats.&lt;/p&gt;</description>
      </item>
    <item>
        <title>No, Iceberg won’t fix your data stack.</title>
        <link>https://mooncake.pgsty.com/blog/post/iceberg-is-terrible/</link>
        <pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/iceberg-is-terrible/</guid>
        <description>&lt;p&gt;Life is expectations vs reality. Here is one for Apache &lt;a href=&#34;https://iceberg.apache.org/&#34;&gt;Iceberg&lt;/a&gt; – a favorite amongst the data community.&lt;/p&gt;&#xA;&lt;h2 id=&#34;expectations-iceberg-is-the-solution-to-all-my-data-pains&#34;&gt;Expectations: Iceberg is the solution to all my data pains&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;See, the core of Iceberg is pretty neat:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Keep all data in object storage in open file formats like Parquet.&lt;/li&gt;&#xA;&lt;li&gt;Fool any execution engine (DuckDB, ClickHouse, Spark, Snowflake, etc.) into thinking these files are a table and query them with SQL directly.&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;[Ongoing progress]&lt;/em&gt; Get exceptional performance on these tables, without having to load data into a system-specific format.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;And with clever design you get:&lt;/p&gt;</description>
      </item>
    <item>
        <title>but, my Postgres (&#43; lakehouse) is free</title>
        <link>https://mooncake.pgsty.com/blog/post/postgres-lakehouse-free/</link>
        <pubDate>Fri, 13 Jun 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/postgres-lakehouse-free/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Your Postgres and Lakehouse are free and open too. You don&amp;rsquo;t need to be (or spend like) a giant to use them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-postgres--lakehouse&#34;&gt;Why Postgres + Lakehouse?&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;reason-1-if-you-believe-in-ai-this-is-the-agent-stack&#34;&gt;Reason #1: If you believe in AI, this is the agent stack&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Agents need memory. Both working memory and longer-term knowledge.&lt;/p&gt;&#xA;&lt;p&gt;Working memory has to be instant, reliable, and accurate, just like app state. What&amp;rsquo;s the best place to store it? Postgres. That&amp;rsquo;s true for both apps and agents. This state is typically tied to an individual user, tenant, or agent.&lt;/p&gt;</description>
      </item>
    <item>
        <title>HTAP is Dead</title>
        <link>https://mooncake.pgsty.com/blog/post/htap-is-dead/</link>
        <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/htap-is-dead/</guid>
        <description>&lt;p&gt;This blog is inspired by Jordan Tigani&amp;rsquo;s blog titled &lt;a href=&#34;https://motherduck.com/blog/big-data-is-dead/&#34;&gt;&amp;ldquo;Big Data is Dead&amp;rdquo;&lt;/a&gt;. Jordan and I actually spent some time building an HTAP database at SingleStore.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-good-old-days-80s&#34;&gt;The good old days (&amp;rsquo;80s)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Back in the &amp;rsquo;80s, one relational database did everything. Transactions (OLTP) during the day and reports after hours (OLAP). Databases like Oracle V2 and IBM DB2 ran OLTP and OLAP on the same system; largely because data sets still fit on a few disks and compute was costly.&lt;/p&gt;</description>
      </item>
    <item>
        <title>What does Analytics in Postgres really mean?</title>
        <link>https://mooncake.pgsty.com/blog/post/why-postgres-analytics/</link>
        <pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/why-postgres-analytics/</guid>
        <description>&lt;p&gt;Few areas in databases are hotter right now than extending Postgres to support analytics queries. This isn&amp;rsquo;t a particularly novel area either –– there have been plenty of attempts in the last decade:&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://mooncake.pgsty.com/images/blog/pganalytics-timeline.jpg&#34; alt=&#34;Timelines&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;Here is what it means to our customers –– and why the problem remains largely unsolved, despite our first attempt with &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;level-0-i-just-run-analytics-queries-on-my-postgres-tables&#34;&gt;Level 0: I just run analytics queries on my Postgres tables&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;You&amp;rsquo;ll be surprised how far this can go with proper indexes, statistics, query tuning, and materialized views—people really overthink this.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake v0.2: what we&#39;re cooking</title>
        <link>https://mooncake.pgsty.com/blog/release/pgmooncake-v02discussion/</link>
        <pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/release/pgmooncake-v02discussion/</guid>
        <description>&lt;p&gt;With v0.1, we proved that Postgres can deliver great analytics performance. Our approach combined two key pieces—DuckDB vectorized engine and a columnstore table—making &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; the only extension in Postgres that integrates both.&lt;/p&gt;&#xA;&lt;p&gt;The results speak for themselves: &lt;code&gt;pg_mooncake&lt;/code&gt; ranks in &lt;a href=&#34;https://mooncake.pgsty.com/blog/post/clickbench-v0.1/&#34;&gt;ClickBench&amp;rsquo;s top 10&lt;/a&gt;, and we built the fastest Parquet-based engine along the way.&lt;/p&gt;&#xA;&lt;p&gt;Now, with v0.2, we&amp;rsquo;re tackling the next big challenge; we call it &lt;strong&gt;out-of-the-box analytics&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;first-why-in-postgres-analytics&#34;&gt;First, why in-Postgres analytics?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Applications often have their first analytics needs far before they have their first data warehouse or analytics system.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to improve DuckDB performance on Parquet</title>
        <link>https://mooncake.pgsty.com/blog/post/duckdb-parquet/</link>
        <pubDate>Wed, 22 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/duckdb-parquet/</guid>
        <description>&lt;p&gt;Last week, we ran ClickBench on Postgres and ranked in the &lt;a href=&#34;https://mooncake.pgsty.com/blog/post/clickbench-v0.1/&#34;&gt;top 10&lt;/a&gt;. We showed that Postgres can be extended with &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; to support serious analytics workloads.&lt;/p&gt;&#xA;&lt;p&gt;In the announcement, we got a lot of questions on how &lt;code&gt;pg_mooncake&lt;/code&gt; outperforms DuckDB on Parquet files even though internally, it embeds DuckDB in Postgres and stores data in Parquet format.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;See also the discussion on &lt;a href=&#34;https://x.com/mooncake_dev/status/1881844188905709880&#34;&gt;X / Twitter&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The best part: &lt;code&gt;pg_mooncake&lt;/code&gt; does not modify DuckDB at all&amp;hellip;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Clickbench says Postgres is a great analytics database</title>
        <link>https://mooncake.pgsty.com/blog/post/clickbench-v0.1/</link>
        <pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/clickbench-v0.1/</guid>
        <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&#xA;We spent a few months optimizing PostgreSQL and made it to the &lt;a href=&#34;https://benchmark.clickhouse.com/&#34;&gt;&lt;strong&gt;Top 10 on ClickBench&lt;/strong&gt;&lt;/a&gt;, a benchmark typically dominated by specialized analytics databases.&lt;/p&gt;&#xA;&lt;p&gt;What&amp;rsquo;s more, all compute is within Postgres, and all tables are managed directly by PostgreSQL—it&amp;rsquo;s not a simple wrapper. This is the story of &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://mooncake.pgsty.com/images/blog/clickbench-blog.jpg&#34; alt=&#34;Clickbench&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;what-is-clickbench&#34;&gt;What Is ClickBench?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ClickHouse/ClickBench/tree/main&#34;&gt;ClickBench&lt;/a&gt; is the definitive benchmark for real-time analytics databases, originally designed to showcase the performance of ClickHouse. It evaluates databases on their ability to handle real-world analytics workloads, including high-volume table scans and complex aggregations.&lt;/p&gt;</description>
      </item>
    <item>
        <title>wth are S3 tables</title>
        <link>https://mooncake.pgsty.com/blog/post/s3tables/</link>
        <pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/s3tables/</guid>
        <description>&lt;p&gt;Amazon announced &lt;a href=&#34;https://aws.amazon.com/s3/features/tables/&#34;&gt;table buckets&lt;/a&gt; during re:Invent last year. An S3 bucket that&amp;rsquo;s also a table? What does that mean?&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; S3 tables allow Iceberg tables to exist without a catalog. Let me explain.&lt;/p&gt;&#xA;&lt;h2 id=&#34;iceberg-vs-delta-lake&#34;&gt;Iceberg vs Delta Lake&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;What? I thought Iceberg and Delta are just table formats? Why are we comparing the way they&amp;rsquo;re implemented?&lt;/p&gt;&#xA;&lt;p&gt;A key difference between Iceberg and Delta Lake is &lt;em&gt;&amp;ldquo;Delta tables can exist without a catalog, but Iceberg cannot&amp;rdquo;&lt;/em&gt;, due to their metadata design:&lt;/p&gt;</description>
      </item>
    <item>
        <title>The easiest way to Analytics in Postgres: pg_mooncake v0.1</title>
        <link>https://mooncake.pgsty.com/blog/release/pgmooncake-v01/</link>
        <pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/release/pgmooncake-v01/</guid>
        <description>&lt;p&gt;We &lt;a href=&#34;https://mooncake.pgsty.com/blog/post/how-we-built-pgmooncake/&#34;&gt;announced&lt;/a&gt; &lt;code&gt;pg_mooncake&lt;/code&gt; to the world on Day 60.&lt;/p&gt;&#xA;&lt;p&gt;Today, Day 131, &lt;code&gt;pg_mooncake&lt;/code&gt; comes out of &lt;a href=&#34;https://github.com/Mooncake-Labs/pg_mooncake/releases/tag/v0.1.0&#34;&gt;beta&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; wins on &lt;strong&gt;ease&lt;/strong&gt; and &lt;strong&gt;performance&lt;/strong&gt;. So, we doubled down for v0.1. That&amp;rsquo;s it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-easiest-way-to-fast-analytics-in-postgres&#34;&gt;The Easiest Way to Fast Analytics in Postgres&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;With a native columnstore table in Postgres, &lt;code&gt;pg_mooncake&lt;/code&gt; brings familiar table semantics to the way you run analytics. Columnstore tables support transactional operations like &lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;SELECT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;, and &lt;code&gt;COPY&lt;/code&gt;, alongside joins with regular Postgres heap tables.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake 🤝 drizzle: typed SDKs for your analytic workloads</title>
        <link>https://mooncake.pgsty.com/blog/post/pgmooncake-drizzle/</link>
        <pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/pgmooncake-drizzle/</guid>
        <description>&lt;p&gt;A thing that surprised us in the &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; &lt;a href=&#34;https://mooncake.pgsty.com/blog/post/how-we-built-pgmooncake/&#34;&gt;launch&lt;/a&gt; was how much developers cared about ORMs for their analytical workloads. We saw two typical requests:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;&amp;ldquo;I have a bunch of Parquet files. I want full ORM support over them.&amp;rdquo;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;&amp;ldquo;I use Drizzle/Prisma for my transactional database. I also want to use it for my analytics and dashboards.&amp;rdquo;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://mooncake.pgsty.com/images/blog/blog6-slack.jpg&#34; alt=&#34;slack&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;We&amp;rsquo;ve always believed that columnar storage in Postgres must look and feel like a regular heap table. It&amp;rsquo;s where we innovated with &lt;code&gt;pg_mooncake&lt;/code&gt; columnstore tables; you can run transactions, updates, deletes, and joins with heap tables.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake &#43; Neon: serverless analytics in Postgres</title>
        <link>https://mooncake.pgsty.com/blog/post/pgmooncake-neon/</link>
        <pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/pgmooncake-neon/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; launched in beta two months ago. It adds columnar storage and a vectorized engine to Postgres.&lt;/p&gt;&#xA;&lt;p&gt;Over the last two months, with our customers, we&amp;rsquo;ve realized we accidentally built the best serverless database for analytics. Here&amp;rsquo;s the story:&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-pg_mooncake--neon-storage-engine&#34;&gt;1. pg_mooncake 🤝 Neon storage engine&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Neon innovated significantly on its &lt;a href=&#34;https://neon.tech/blog/get-page-at-lsn&#34;&gt;storage engine&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a great &lt;a href=&#34;https://x.com/nikitabase/status/1723579854266966399&#34;&gt;thread&lt;/a&gt; by Nikita on this. This storage engine is how Neon can achieve true separation of storage &amp;amp; compute. This leads to an exceptional DX around branching, scale-to-zero, read replicas, instant provisioning&amp;hellip; All of these are goodies of a true serverless Postgres.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake: Fast Analytics in Postgres with Columnstore Tables and DuckDB</title>
        <link>https://mooncake.pgsty.com/blog/post/how-we-built-pgmooncake/</link>
        <pubDate>Wed, 06 Nov 2024 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/how-we-built-pgmooncake/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; brings columnstore tables with DuckDB execution to Postgres for fast analytics.&lt;/p&gt;&#xA;&lt;p&gt;It supports transactional inserts, updates, and deletes, just like regular Postgres tables. Data is written with Delta Lake (and Apache Iceberg in v0.2+) table metadata, allowing it to be queried outside of Postgres.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-another-postgres-analytics-extension&#34;&gt;Why another Postgres analytics extension?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Postgres is the most popular database these days, but it&amp;rsquo;s bad at analytics. Numerous attempts have been made to address this, but with limited success so far. Fast analytics require a distinct set of techniques, such as columnar storage, vectorized execution, and late materialization, etc. Early projects like Citus &amp;amp; Timescale added columnar storage, but there was no good vectorized execution to leverage the format.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Mooncake: next-gen search and analytic systems</title>
        <link>https://mooncake.pgsty.com/blog/post/mooncake-launch/</link>
        <pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/mooncake-launch/</guid>
        <description>&lt;p&gt;We are Zhou, Cheng, and Pranav. And we&amp;rsquo;ve spent the last decade building databases at MemSQL (now SingleStore).&lt;/p&gt;&#xA;&lt;p&gt;We love complex systems, deep-tech engineering, and naturally – physics 🙂 Data systems, much like physics, are built on certain principles. The principles need to be unanimous and durable.&lt;/p&gt;&#xA;&lt;p&gt;Building systems that are simply &amp;rsquo;technically&amp;rsquo; better is futile. The success of a data system depends on the principles it embodies, and changing them along the way is extremely difficult. Closed-source companies can&amp;rsquo;t go to open source and expect adoption. Databases can&amp;rsquo;t just abandon their storage format and be effective stateless engines.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Reflections from the Iceberg Meetup</title>
        <link>https://mooncake.pgsty.com/blog/post/iceberg-meetup/</link>
        <pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/iceberg-meetup/</guid>
        <description>&lt;p&gt;Last month, I spoke at the Iceberg meetup at Snowflake HQ. Public speaking has never been my favorite, and knowing Snowflake CEO Sridhar and Tabular CEO Ryan were in the audience did not help.&lt;/p&gt;&#xA;&lt;p&gt;It was day 18 of starting Mooncake Labs, and I spoke about a general indexing framework for Iceberg. You can find the details &lt;a href=&#34;https://docs.google.com/presentation/d/1dkCA-y-T5Iuwa8A-7cif6pIUe80kN4V_tLGA05Ks3Mo/edit?usp=sharing&#34;&gt;here&lt;/a&gt;. Here were some of my learnings:&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-great-products-are-a-reflection-of-its-community&#34;&gt;1. Great products are a reflection of its community.&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;I spent the last decade building a proprietary database. Every time a feature request came in, engineering and product leaders would spend hours prioritizing its impact. Almost every time, it boiled down to one question: How much ARR? I watched my best engineers spend months building awkward hooks and extensions that did not fit the bigger picture. I often thought, &lt;em&gt;Just ask the customer to make a PR :)&lt;/em&gt; The end product of this type of prioritization process tends to look like:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Things we learnt</title>
        <link>https://mooncake.pgsty.com/blog/post/things-we-learnt/</link>
        <pubDate>Sun, 08 Sep 2024 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/things-we-learnt/</guid>
        <description>&lt;p&gt;The title should really be &amp;ldquo;Things we learnt, the hard way&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;As we start this new journey, we spent some time thinking about the axioms of data today. These are things we (or no one for that matter) can dispute.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-if-postgres-can-do-it-postgres-will-do-it&#34;&gt;1. If Postgres can do it, Postgres will do it&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We&amp;rsquo;ve seen this one plenty of times now – it started with JSON, then moved to geo-spatial (&lt;code&gt;PostGIS&lt;/code&gt;), and now we&amp;rsquo;re seeing it with vector search (&lt;code&gt;pgvector&lt;/code&gt;).&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
