Commit 167075b
committed
Add strict_multi_assignment and too_many_rows plpgsql checks
Until now shadowed_variables was the only plpgsql check supported by
plpgsql.extra_warnings and plpgsql.extra_errors. This patch introduces
two new checks - strict_multi_assignment and too_many_rows. Unlike
shadowed_variables, these new checks are enforced at run-time.
strict_multi_assignment checks that commands allowing multi-assignment
(for example SELECT INTO) have the same number of sources and targets.
too_many_rows checks that queries with an INTO clause return one row
exactly.
These checks are aimed at cases that are technically valid and allowed,
but are often a sign of a bug. Therefore those checks are expected to
be enabled primarily in development and testing environments.
Author: Pavel Stehule
Reviewed-by: Stephen Frost, Tomas Vondra
Discussion: https://www.postgresql.org/message-id/flat/CAFj8pRA2kKRDKpUNwLY0GeG1OqOp+tLS2yQA1V41gzuSz-hCng@mail.gmail.com1 parent 2d30675 commit 167075b
File tree
6 files changed
+400
-33
lines changed- doc/src/sgml
- src
- pl/plpgsql/src
- test/regress
- expected
- sql
6 files changed
+400
-33
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5034 | 5034 | | |
5035 | 5035 | | |
5036 | 5036 | | |
5037 | | - | |
| 5037 | + | |
5038 | 5038 | | |
5039 | 5039 | | |
5040 | 5040 | | |
| |||
5046 | 5046 | | |
5047 | 5047 | | |
5048 | 5048 | | |
5049 | | - | |
5050 | | - | |
5051 | | - | |
5052 | | - | |
5053 | | - | |
5054 | | - | |
5055 | | - | |
5056 | | - | |
5057 | | - | |
5058 | | - | |
5059 | | - | |
5060 | | - | |
5061 | | - | |
5062 | | - | |
5063 | | - | |
5064 | | - | |
5065 | | - | |
| 5049 | + | |
| 5050 | + | |
| 5051 | + | |
| 5052 | + | |
| 5053 | + | |
| 5054 | + | |
| 5055 | + | |
| 5056 | + | |
| 5057 | + | |
| 5058 | + | |
| 5059 | + | |
| 5060 | + | |
| 5061 | + | |
| 5062 | + | |
| 5063 | + | |
| 5064 | + | |
| 5065 | + | |
| 5066 | + | |
| 5067 | + | |
| 5068 | + | |
| 5069 | + | |
| 5070 | + | |
5066 | 5071 | | |
5067 | | - | |
5068 | | - | |
| 5072 | + | |
| 5073 | + | |
| 5074 | + | |
| 5075 | + | |
| 5076 | + | |
| 5077 | + | |
| 5078 | + | |
| 5079 | + | |
| 5080 | + | |
| 5081 | + | |
| 5082 | + | |
| 5083 | + | |
| 5084 | + | |
| 5085 | + | |
| 5086 | + | |
| 5087 | + | |
| 5088 | + | |
| 5089 | + | |
| 5090 | + | |
| 5091 | + | |
| 5092 | + | |
| 5093 | + | |
| 5094 | + | |
| 5095 | + | |
| 5096 | + | |
| 5097 | + | |
| 5098 | + | |
| 5099 | + | |
| 5100 | + | |
| 5101 | + | |
| 5102 | + | |
| 5103 | + | |
| 5104 | + | |
| 5105 | + | |
| 5106 | + | |
5069 | 5107 | | |
5070 | 5108 | | |
5071 | 5109 | | |
| |||
5081 | 5119 | | |
5082 | 5120 | | |
5083 | 5121 | | |
5084 | | - | |
5085 | | - | |
| 5122 | + | |
| 5123 | + | |
| 5124 | + | |
| 5125 | + | |
| 5126 | + | |
| 5127 | + | |
| 5128 | + | |
| 5129 | + | |
| 5130 | + | |
| 5131 | + | |
| 5132 | + | |
| 5133 | + | |
| 5134 | + | |
| 5135 | + | |
| 5136 | + | |
| 5137 | + | |
| 5138 | + | |
| 5139 | + | |
| 5140 | + | |
| 5141 | + | |
| 5142 | + | |
| 5143 | + | |
| 5144 | + | |
| 5145 | + | |
| 5146 | + | |
| 5147 | + | |
| 5148 | + | |
| 5149 | + | |
| 5150 | + | |
| 5151 | + | |
| 5152 | + | |
| 5153 | + | |
| 5154 | + | |
| 5155 | + | |
| 5156 | + | |
5086 | 5157 | | |
5087 | 5158 | | |
5088 | 5159 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4020 | 4020 | | |
4021 | 4021 | | |
4022 | 4022 | | |
| 4023 | + | |
| 4024 | + | |
| 4025 | + | |
| 4026 | + | |
| 4027 | + | |
| 4028 | + | |
4023 | 4029 | | |
4024 | 4030 | | |
4025 | 4031 | | |
| |||
4059 | 4065 | | |
4060 | 4066 | | |
4061 | 4067 | | |
4062 | | - | |
4063 | | - | |
4064 | | - | |
| 4068 | + | |
| 4069 | + | |
| 4070 | + | |
| 4071 | + | |
4065 | 4072 | | |
4066 | 4073 | | |
4067 | 4074 | | |
| |||
4070 | 4077 | | |
4071 | 4078 | | |
4072 | 4079 | | |
4073 | | - | |
| 4080 | + | |
4074 | 4081 | | |
4075 | 4082 | | |
4076 | 4083 | | |
| |||
4187 | 4194 | | |
4188 | 4195 | | |
4189 | 4196 | | |
4190 | | - | |
| 4197 | + | |
4191 | 4198 | | |
4192 | 4199 | | |
| 4200 | + | |
4193 | 4201 | | |
4194 | 4202 | | |
4195 | 4203 | | |
4196 | 4204 | | |
4197 | 4205 | | |
4198 | 4206 | | |
4199 | | - | |
| 4207 | + | |
| 4208 | + | |
| 4209 | + | |
4200 | 4210 | | |
4201 | 4211 | | |
4202 | | - | |
| 4212 | + | |
| 4213 | + | |
4203 | 4214 | | |
4204 | 4215 | | |
4205 | 4216 | | |
| |||
6835 | 6846 | | |
6836 | 6847 | | |
6837 | 6848 | | |
| 6849 | + | |
| 6850 | + | |
| 6851 | + | |
| 6852 | + | |
| 6853 | + | |
| 6854 | + | |
| 6855 | + | |
| 6856 | + | |
| 6857 | + | |
| 6858 | + | |
| 6859 | + | |
| 6860 | + | |
| 6861 | + | |
6838 | 6862 | | |
6839 | 6863 | | |
6840 | 6864 | | |
| |||
6913 | 6937 | | |
6914 | 6938 | | |
6915 | 6939 | | |
| 6940 | + | |
6916 | 6941 | | |
6917 | 6942 | | |
6918 | 6943 | | |
6919 | 6944 | | |
| 6945 | + | |
| 6946 | + | |
| 6947 | + | |
| 6948 | + | |
| 6949 | + | |
| 6950 | + | |
| 6951 | + | |
| 6952 | + | |
| 6953 | + | |
| 6954 | + | |
| 6955 | + | |
| 6956 | + | |
6920 | 6957 | | |
6921 | 6958 | | |
6922 | 6959 | | |
| |||
6930 | 6967 | | |
6931 | 6968 | | |
6932 | 6969 | | |
| 6970 | + | |
| 6971 | + | |
| 6972 | + | |
| 6973 | + | |
| 6974 | + | |
| 6975 | + | |
| 6976 | + | |
| 6977 | + | |
| 6978 | + | |
| 6979 | + | |
| 6980 | + | |
| 6981 | + | |
| 6982 | + | |
| 6983 | + | |
| 6984 | + | |
| 6985 | + | |
| 6986 | + | |
| 6987 | + | |
| 6988 | + | |
| 6989 | + | |
| 6990 | + | |
| 6991 | + | |
| 6992 | + | |
6933 | 6993 | | |
6934 | 6994 | | |
6935 | 6995 | | |
| |||
6986 | 7046 | | |
6987 | 7047 | | |
6988 | 7048 | | |
| 7049 | + | |
6989 | 7050 | | |
6990 | 7051 | | |
6991 | 7052 | | |
6992 | 7053 | | |
| 7054 | + | |
| 7055 | + | |
| 7056 | + | |
| 7057 | + | |
| 7058 | + | |
| 7059 | + | |
| 7060 | + | |
| 7061 | + | |
| 7062 | + | |
| 7063 | + | |
| 7064 | + | |
6993 | 7065 | | |
6994 | 7066 | | |
6995 | 7067 | | |
6996 | 7068 | | |
6997 | 7069 | | |
6998 | 7070 | | |
| 7071 | + | |
| 7072 | + | |
| 7073 | + | |
| 7074 | + | |
| 7075 | + | |
| 7076 | + | |
| 7077 | + | |
| 7078 | + | |
| 7079 | + | |
| 7080 | + | |
| 7081 | + | |
| 7082 | + | |
| 7083 | + | |
| 7084 | + | |
| 7085 | + | |
| 7086 | + | |
| 7087 | + | |
| 7088 | + | |
| 7089 | + | |
| 7090 | + | |
| 7091 | + | |
| 7092 | + | |
6999 | 7093 | | |
7000 | 7094 | | |
7001 | 7095 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
95 | 99 | | |
96 | 100 | | |
97 | 101 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1135 | 1135 | | |
1136 | 1136 | | |
1137 | 1137 | | |
1138 | | - | |
1139 | | - | |
1140 | | - | |
1141 | | - | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
1142 | 1144 | | |
1143 | 1145 | | |
1144 | 1146 | | |
| |||
0 commit comments