Commit 844fe9f
committed
Add the ability for the core grammar to have more than one parse target.
This patch essentially allows gram.y to implement a family of related
syntax trees, rather than necessarily always parsing a list of SQL
statements. raw_parser() gains a new argument, enum RawParseMode,
to say what to do. As proof of concept, add a mode that just parses
a TypeName without any other decoration, and use that to greatly
simplify typeStringToTypeName().
In addition, invent a new SPI entry point SPI_prepare_extended() to
allow SPI users (particularly plpgsql) to get at this new functionality.
In hopes of making this the last variant of SPI_prepare(), set up its
additional arguments as a struct rather than direct arguments, and
promise that future additions to the struct can default to zero.
SPI_prepare_cursor() and SPI_prepare_params() can perhaps go away at
some point.
Discussion: https://postgr.es/m/4165684.1607707277@sss.pgh.pa.us1 parent b49154b commit 844fe9f
File tree
14 files changed
+268
-83
lines changed- doc/src/sgml
- src
- backend
- commands
- executor
- parser
- tcop
- include
- executor
- parser
- interfaces/ecpg/preproc
- pl/plpgsql/src
14 files changed
+268
-83
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1105 | 1105 | | |
1106 | 1106 | | |
1107 | 1107 | | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
1108 | 1113 | | |
1109 | 1114 | | |
1110 | 1115 | | |
| |||
1176 | 1181 | | |
1177 | 1182 | | |
1178 | 1183 | | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
| 1199 | + | |
| 1200 | + | |
| 1201 | + | |
| 1202 | + | |
| 1203 | + | |
| 1204 | + | |
| 1205 | + | |
| 1206 | + | |
| 1207 | + | |
| 1208 | + | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
| 1214 | + | |
| 1215 | + | |
| 1216 | + | |
| 1217 | + | |
| 1218 | + | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
| 1233 | + | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
| 1241 | + | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
| 1267 | + | |
| 1268 | + | |
| 1269 | + | |
| 1270 | + | |
| 1271 | + | |
| 1272 | + | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
| 1280 | + | |
| 1281 | + | |
| 1282 | + | |
| 1283 | + | |
| 1284 | + | |
| 1285 | + | |
| 1286 | + | |
| 1287 | + | |
| 1288 | + | |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
1179 | 1300 | | |
1180 | 1301 | | |
1181 | 1302 | | |
| |||
1208 | 1329 | | |
1209 | 1330 | | |
1210 | 1331 | | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
1211 | 1337 | | |
1212 | 1338 | | |
1213 | 1339 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12095 | 12095 | | |
12096 | 12096 | | |
12097 | 12097 | | |
12098 | | - | |
| 12098 | + | |
12099 | 12099 | | |
12100 | 12100 | | |
12101 | 12101 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
508 | 508 | | |
509 | 509 | | |
510 | 510 | | |
| 511 | + | |
511 | 512 | | |
512 | 513 | | |
513 | 514 | | |
| |||
681 | 682 | | |
682 | 683 | | |
683 | 684 | | |
| 685 | + | |
684 | 686 | | |
685 | 687 | | |
686 | 688 | | |
| |||
726 | 728 | | |
727 | 729 | | |
728 | 730 | | |
| 731 | + | |
729 | 732 | | |
730 | 733 | | |
731 | 734 | | |
| |||
768 | 771 | | |
769 | 772 | | |
770 | 773 | | |
| 774 | + | |
771 | 775 | | |
772 | 776 | | |
773 | 777 | | |
| |||
784 | 788 | | |
785 | 789 | | |
786 | 790 | | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
787 | 827 | | |
788 | 828 | | |
789 | 829 | | |
| |||
805 | 845 | | |
806 | 846 | | |
807 | 847 | | |
| 848 | + | |
808 | 849 | | |
809 | 850 | | |
810 | 851 | | |
| |||
1340 | 1381 | | |
1341 | 1382 | | |
1342 | 1383 | | |
| 1384 | + | |
1343 | 1385 | | |
1344 | 1386 | | |
1345 | 1387 | | |
| |||
1400 | 1442 | | |
1401 | 1443 | | |
1402 | 1444 | | |
| 1445 | + | |
1403 | 1446 | | |
1404 | 1447 | | |
1405 | 1448 | | |
| |||
2036 | 2079 | | |
2037 | 2080 | | |
2038 | 2081 | | |
2039 | | - | |
| 2082 | + | |
| 2083 | + | |
2040 | 2084 | | |
2041 | 2085 | | |
2042 | 2086 | | |
| |||
2063 | 2107 | | |
2064 | 2108 | | |
2065 | 2109 | | |
2066 | | - | |
| 2110 | + | |
2067 | 2111 | | |
2068 | 2112 | | |
2069 | 2113 | | |
| |||
2168 | 2212 | | |
2169 | 2213 | | |
2170 | 2214 | | |
2171 | | - | |
| 2215 | + | |
2172 | 2216 | | |
2173 | 2217 | | |
2174 | 2218 | | |
| |||
2866 | 2910 | | |
2867 | 2911 | | |
2868 | 2912 | | |
| 2913 | + | |
2869 | 2914 | | |
2870 | 2915 | | |
2871 | 2916 | | |
| |||
2930 | 2975 | | |
2931 | 2976 | | |
2932 | 2977 | | |
| 2978 | + | |
2933 | 2979 | | |
2934 | 2980 | | |
2935 | 2981 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
384 | 384 | | |
385 | 385 | | |
386 | 386 | | |
387 | | - | |
| 387 | + | |
388 | 388 | | |
389 | 389 | | |
390 | 390 | | |
| |||
723 | 723 | | |
724 | 724 | | |
725 | 725 | | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
726 | 735 | | |
727 | 736 | | |
728 | 737 | | |
| |||
787 | 796 | | |
788 | 797 | | |
789 | 798 | | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
790 | 803 | | |
791 | | - | |
| 804 | + | |
| 805 | + | |
792 | 806 | | |
793 | 807 | | |
794 | 808 | | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
795 | 813 | | |
796 | 814 | | |
797 | 815 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1541 | 1541 | | |
1542 | 1542 | | |
1543 | 1543 | | |
1544 | | - | |
| 1544 | + | |
1545 | 1545 | | |
1546 | 1546 | | |
1547 | 1547 | | |
| |||
2380 | 2380 | | |
2381 | 2381 | | |
2382 | 2382 | | |
2383 | | - | |
| 2383 | + | |
| 2384 | + | |
2384 | 2385 | | |
2385 | 2386 | | |
2386 | 2387 | | |
| |||
0 commit comments