Update backend flow diagram to include MERGE
authorJonathan S. Katz <jonathan.katz@excoventures.com>
Fri, 17 Mar 2023 17:41:59 +0000 (13:41 -0400)
committerJonathan S. Katz <jonathan.katz@excoventures.com>
Fri, 17 Mar 2023 17:41:59 +0000 (13:41 -0400)
MERGE was added in PostgreSQL 15, and the diagram is now updated
to show where it fits into the backend flow.

Author: Bruce Momjian <bruce@momjian.us>

media/img/developer/backend/flow.fig
media/img/developer/backend/flow.gif
templates/pages/developer/backend.html

index 96b23034036cdb36155eac32906a05c75988a1de..d525bdf7acd6eecb9800c687c780b573eb0b6267 100644 (file)
@@ -1,8 +1,8 @@
-#FIG 3.2  Produced by xfig version 3.2.5b
+#FIG 3.2  Produced by xfig version 3.2.8
 Portrait
 Center
 Inches
-Letter  
+Letter
 88.00
 Single
 -2
@@ -39,8 +39,6 @@ Single
 2 1 0 2 31 7 1 0 -1 0.000 0 0 -1 1 0 2
        0 0 2.00 150.00 180.00
         2400 3300 2400 4275
-2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5
-        3600 7200 1200 7200 1200 6600 3600 6600 3600 7200
 2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5
         3600 10800 1200 10800 1200 10200 3600 10200 3600 10800
 2 1 1 2 32 7 1 0 -1 4.000 0 0 -1 1 0 2
@@ -103,6 +101,8 @@ Single
         2400 9600 2400 10200
 2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5
         3600 4800 1200 4800 1200 4200 3600 4200 3600 4800
+2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5
+        3600 7200 1200 7200 1200 6600 3600 6600 3600 7200
 3 2 2 2 20 7 0 0 -1 6.000 1 1 0 5
        0 0 2.00 150.00 180.00
         2415 2140 3090 2440 5265 2515 6090 2590 6315 2740
@@ -117,27 +117,27 @@ Single
         1125 10500 900 10350 675 9975 675 4350 900 3975 1350 3900
         1800 3900 2100 4200
         0.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
-4 1 5 2 0 28 18 0.0000 4 285 870 4350 5625 utility\001
-4 1 -1 0 0 16 18 0.0000 4 210 1455 2400 1950 Postmaster\001
-4 1 -1 0 0 16 18 0.0000 4 270 1125 2400 3150 Postgres\001
-4 1 -1 0 0 16 18 0.0000 4 270 1125 6300 3150 Postgres\001
-4 1 7 0 0 16 18 0.0000 4 270 720 6300 1350 Libpq\001
-4 1 -1 0 0 16 18 0.0000 4 210 615 2400 750 Main\001
-4 1 7 0 0 16 18 0.0000 4 210 1815 2400 9450 Generate Plan\001
-4 1 7 0 0 16 18 0.0000 4 270 1440 2400 5850 Traffic Cop\001
-4 1 7 0 0 16 18 0.0000 4 210 1980 2400 8250 Generate Paths\001
-4 1 5 2 0 28 18 0.0000 4 225 615 2400 9900 Plan\001
-4 1 5 2 0 28 18 0.0000 4 285 1920 2400 8700 Optimal Path\001
-4 1 5 2 0 28 18 0.0000 4 285 900 2400 6300 Query\001
-4 1 7 0 0 16 18 0.0000 4 210 1680 2400 10650 Execute Plan\001
-4 0 5 0 0 16 12 0.0000 4 210 2640 5250 6300 e.g. CREATE TABLE, COPY\001
-4 1 5 0 0 16 12 0.0000 4 195 3540 2400 6525 SELECT, INSERT, UPDATE, DELETE\001
-4 1 7 0 0 16 18 0.0000 4 270 1800 2400 7050 Rewrite Query\001
-4 1 7 0 0 16 18 0.0000 4 210 2130 2400 4650 Parse Statement\001
-4 1 7 0 0 16 18 0.0000 4 270 720 6300 5700 Utility\001
-4 1 7 0 0 16 18 0.0000 4 210 1335 6300 6000 Command\001
-4 1 -1 0 0 16 18 0.0000 4 270 2355 7950 12900 Storage Managers\001
-4 1 -1 0 0 16 18 0.0000 4 270 1020 4800 12900 Catalog\001
-4 1 -1 0 0 16 18 0.0000 4 210 915 1500 12900 Utilities\001
-4 1 -1 0 0 16 18 0.0000 4 210 2085 3000 14100 Access Methods\001
-4 1 -1 0 0 16 18 0.0000 4 210 1635 6300 14100 Nodes / Lists\001
+4 1 5 2 0 28 18 0.0000 4 315 825 4350 5625 utility\001
+4 1 -1 0 0 16 18 0.0000 4 225 1530 2400 1950 Postmaster\001
+4 1 -1 0 0 16 18 0.0000 4 285 1185 2400 3150 Postgres\001
+4 1 -1 0 0 16 18 0.0000 4 285 1185 6300 3150 Postgres\001
+4 1 7 0 0 16 18 0.0000 4 285 720 6300 1350 Libpq\001
+4 1 -1 0 0 16 18 0.0000 4 225 645 2400 750 Main\001
+4 1 7 0 0 16 18 0.0000 4 225 1935 2400 9450 Generate Plan\001
+4 1 7 0 0 16 18 0.0000 4 285 1485 2400 5850 Traffic Cop\001
+4 1 7 0 0 16 18 0.0000 4 225 2115 2400 8250 Generate Paths\001
+4 1 5 2 0 28 18 0.0000 4 225 600 2400 9900 Plan\001
+4 1 5 2 0 28 18 0.0000 4 315 1815 2400 8700 Optimal Path\001
+4 1 5 2 0 28 18 0.0000 4 300 855 2400 6300 Query\001
+4 1 7 0 0 16 18 0.0000 4 225 1755 2400 10650 Execute Plan\001
+4 0 5 0 0 16 12 0.0000 4 195 2550 5250 6300 e.g. CREATE TABLE, COPY\001
+4 1 7 0 0 16 18 0.0000 4 300 1950 2400 7050 Rewrite Query\001
+4 1 7 0 0 16 18 0.0000 4 225 2250 2400 4650 Parse Statement\001
+4 1 7 0 0 16 18 0.0000 4 300 735 6300 5700 Utility\001
+4 1 7 0 0 16 18 0.0000 4 225 1395 6300 6000 Command\001
+4 1 -1 0 0 16 18 0.0000 4 285 2475 7950 12900 Storage Managers\001
+4 1 -1 0 0 16 18 0.0000 4 285 1035 4800 12900 Catalog\001
+4 1 -1 0 0 16 18 0.0000 4 225 960 1500 12900 Utilities\001
+4 1 -1 0 0 16 18 0.0000 4 225 2205 3000 14100 Access Methods\001
+4 1 -1 0 0 16 18 0.0000 4 225 1755 6300 14100 Nodes / Lists\001
+4 1 5 0 0 16 12 0.0000 4 180 4245 2400 6525 SELECT, INSERT, UPDATE, DELETE, MERGE\001
index b4f527b58bfabf2b20fd9f4a3d08716c466d3320..de2142f1ead76bff15bc31e0da8c5ca7d3afd5da 100644 (file)
Binary files a/media/img/developer/backend/flow.gif and b/media/img/developer/backend/flow.gif differ
index 3cf001c84ef4b81adfa002616f51d07ffc66d8db..a5566448a0855df44171bae48554648c6c0a3826 100644 (file)
@@ -17,26 +17,26 @@ echo "0, 0," | awk -F, '{printf "%d, %d\n", $1 + 145, $2 + 45}'
  -->
 
 <map name="flowmap" id="flowmap">
-<area coords="50, 0, 195, 45" href="https://wiki.postgresql.org/wiki/Backend_flowchart#main" alt="main" />
-<area coords="50, 65,  195, 110" href="https://wiki.postgresql.org/wiki/Backend_flowchart#postmaster" alt="postmaster" />
-<area coords="50, 135, 195, 180" href="https://wiki.postgresql.org/wiki/Backend_flowchart#tcop" alt="tcop" />
-<area coords="50, 225, 195, 270" href="https://wiki.postgresql.org/wiki/Backend_flowchart#parser" alt="parser" />
-<area coords="50, 295, 195, 340" href="https://wiki.postgresql.org/wiki/Backend_flowchart#tcop" alt="tcop" />
-<area coords="50, 365, 195, 410" href="https://wiki.postgresql.org/wiki/Backend_flowchart#rewrite" alt="rewrite" />
-<area coords="50, 435, 195, 480" href="https://wiki.postgresql.org/wiki/Backend_flowchart#optimizer_path" alt="path" />
-<area coords="50, 505, 195, 550" href="https://wiki.postgresql.org/wiki/Backend_flowchart#optimizer_plan" alt="plan" />
-<area coords="50, 575, 195, 620" href="https://wiki.postgresql.org/wiki/Backend_flowchart#executor" alt="executor" />
-
-<area coords="280, 35, 425, 80" href="https://wiki.postgresql.org/wiki/Backend_flowchart#libpq" alt="libpq" />
-<area coords="280, 135, 425, 180" href="https://wiki.postgresql.org/wiki/Backend_flowchart#tcop" alt="tcop" />
-<area coords="280, 285, 425, 330" href="https://wiki.postgresql.org/wiki/Backend_flowchart#commands" alt="commands" />
-
-<area coords="0, 710, 145, 755" href="https://wiki.postgresql.org/wiki/Backend_flowchart#utils" alt="utils" />
-<area coords="190, 710, 335, 755" href="https://wiki.postgresql.org/wiki/Backend_flowchart#catalog" alt="catalog" />
-<area coords="365, 710, 510, 755" href="https://wiki.postgresql.org/wiki/Backend_flowchart#storage" alt="storage" />
-
-<area coords="85, 780, 230, 825" href="https://wiki.postgresql.org/wiki/Backend_flowchart#access" alt="access" />
-<area coords="280, 780, 425, 825" href="https://wiki.postgresql.org/wiki/Backend_flowchart#nodes" alt="nodes" />
+<area coords="58, 0, 198, 45" href="https://wiki.postgresql.org/wiki/Backend_flowchart#main" alt="main" />
+<area coords="58, 65,  198, 110" href="https://wiki.postgresql.org/wiki/Backend_flowchart#postmaster" alt="postmaster" />
+<area coords="58, 135, 198, 180" href="https://wiki.postgresql.org/wiki/Backend_flowchart#tcop" alt="tcop" />
+<area coords="58, 225, 198, 270" href="https://wiki.postgresql.org/wiki/Backend_flowchart#parser" alt="parser" />
+<area coords="58, 295, 198, 340" href="https://wiki.postgresql.org/wiki/Backend_flowchart#tcop" alt="tcop" />
+<area coords="58, 365, 198, 410" href="https://wiki.postgresql.org/wiki/Backend_flowchart#rewrite" alt="rewrite" />
+<area coords="58, 435, 198, 480" href="https://wiki.postgresql.org/wiki/Backend_flowchart#optimizer_path" alt="path" />
+<area coords="58, 505, 198, 550" href="https://wiki.postgresql.org/wiki/Backend_flowchart#optimizer_plan" alt="plan" />
+<area coords="58, 575, 198, 620" href="https://wiki.postgresql.org/wiki/Backend_flowchart#executor" alt="executor" />
+
+<area coords="288, 35, 428, 80" href="https://wiki.postgresql.org/wiki/Backend_flowchart#libpq" alt="libpq" />
+<area coords="288, 135, 428, 180" href="https://wiki.postgresql.org/wiki/Backend_flowchart#tcop" alt="tcop" />
+<area coords="288, 285, 428, 330" href="https://wiki.postgresql.org/wiki/Backend_flowchart#commands" alt="commands" />
+
+<area coords="8, 710, 148, 755" href="https://wiki.postgresql.org/wiki/Backend_flowchart#utils" alt="utils" />
+<area coords="198, 710, 338, 755" href="https://wiki.postgresql.org/wiki/Backend_flowchart#catalog" alt="catalog" />
+<area coords="373, 710, 513, 755" href="https://wiki.postgresql.org/wiki/Backend_flowchart#storage" alt="storage" />
+
+<area coords="93, 780, 233, 825" href="https://wiki.postgresql.org/wiki/Backend_flowchart#access" alt="access" />
+<area coords="288, 780, 428, 825" href="https://wiki.postgresql.org/wiki/Backend_flowchart#nodes" alt="nodes" />
 </map>
 </center>