| | @@ -1114,82 +1114,76 @@ EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1; |
1114 | 1114 | ---- |
1115 | 1115 | ---- No. A-13-4 output of debugging log on hint status |
1116 | 1116 | ---- |
| 1117 | +CREATE OR REPLACE FUNCTION recall_planner() RETURNS int AS $$ |
| 1118 | + SELECT /*+ IndexScan(t_1) */t_1.c1 |
| 1119 | + FROM s1.t1 t_1 |
| 1120 | + JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) |
| 1121 | + ORDER BY t_1.c1 LIMIT 1; |
| 1122 | +$$ LANGUAGE SQL IMMUTABLE; |
1117 | 1123 | |
1118 | 1124 | --No.13-4-1 |
1119 | 1125 | /*+HashJoin(t_1 t_2)*/ |
1120 | 1126 | EXPLAIN (COSTS false) |
1121 | | - SELECT nested_planner(2) FROM s1.t1 t_1 |
| 1127 | + SELECT recall_planner() FROM s1.t1 t_1 |
1122 | 1128 | JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) |
1123 | 1129 | ORDER BY t_1.c1; |
1124 | 1130 | |
1125 | 1131 | --No.13-4-2 |
1126 | 1132 | /*+HashJoin(st_1 st_2)*/ |
1127 | 1133 | EXPLAIN (COSTS false) |
1128 | | - SELECT nested_planner(2) FROM s1.t1 st_1 |
| 1134 | + SELECT recall_planner() FROM s1.t1 st_1 |
1129 | 1135 | JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1) |
1130 | 1136 | ORDER BY st_1.c1; |
1131 | 1137 | |
1132 | 1138 | --No.13-4-3 |
1133 | 1139 | /*+HashJoin(t_1 t_2)*/ |
1134 | 1140 | EXPLAIN (COSTS false) |
1135 | | - SELECT nested_planner(2) FROM s1.t1 st_1 |
| 1141 | + SELECT recall_planner() FROM s1.t1 st_1 |
1136 | 1142 | JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1) |
1137 | 1143 | ORDER BY st_1.c1; |
1138 | 1144 | |
1139 | 1145 | --No.13-4-4 |
1140 | 1146 | /*+HashJoin(st_1 st_2)*/ |
1141 | 1147 | EXPLAIN (COSTS false) |
1142 | | - SELECT nested_planner(2) FROM s1.t1 t_1 |
| 1148 | + SELECT recall_planner() FROM s1.t1 t_1 |
1143 | 1149 | JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) |
1144 | 1150 | ORDER BY t_1.c1; |
1145 | 1151 | |
1146 | 1152 | --No.13-4-5 |
1147 | 1153 | /*+HashJoin(t_1 t_1)*/ |
1148 | 1154 | EXPLAIN (COSTS false) |
1149 | | - SELECT nested_planner(2) FROM s1.t1 t_1 |
| 1155 | + SELECT recall_planner() FROM s1.t1 t_1 |
1150 | 1156 | ORDER BY t_1.c1; |
1151 | 1157 | |
1152 | 1158 | --No.13-4-6 |
1153 | | -CREATE OR REPLACE FUNCTION nested_planner_one_t(cnt int) RETURNS int AS $$ |
1154 | | -DECLARE |
1155 | | - new_cnt int; |
1156 | | -BEGIN |
1157 | | - RAISE NOTICE 'nested_planner_one_t(%)', cnt; |
1158 | | - |
1159 | | - IF cnt <= 1 THEN |
1160 | | - RETURN 0; |
1161 | | - END IF; |
1162 | | - |
1163 | | - SELECT /*+ IndexScan(t_1) */ nested_planner_one_t(cnt - 1) INTO new_cnt |
| 1159 | +CREATE OR REPLACE FUNCTION recall_planner_one_t() RETURNS int AS $$ |
| 1160 | + SELECT /*+ IndexScan(t_1) */t_1.c1 |
1164 | 1161 | FROM s1.t1 t_1 |
1165 | 1162 | ORDER BY t_1.c1 LIMIT 1; |
1166 | | - |
1167 | | - RETURN new_cnt; |
1168 | | -END; |
1169 | | -$$ LANGUAGE plpgsql IMMUTABLE; |
| 1163 | +$$ LANGUAGE SQL IMMUTABLE; |
1170 | 1164 | |
1171 | 1165 | EXPLAIN (COSTS false) |
1172 | | - SELECT nested_planner_one_t(2) FROM s1.t1 t_1 |
| 1166 | + SELECT recall_planner_one_t() FROM s1.t1 t_1 |
1173 | 1167 | JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) |
1174 | 1168 | ORDER BY t_1.c1; |
1175 | 1169 | /*+HashJoin(t_1 t_1)*/ |
1176 | 1170 | EXPLAIN (COSTS false) |
1177 | | - SELECT nested_planner_one_t(2) FROM s1.t1 t_1 |
| 1171 | + SELECT recall_planner_one_t() FROM s1.t1 t_1 |
1178 | 1172 | JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) |
1179 | 1173 | ORDER BY t_1.c1; |
1180 | 1174 | |
1181 | | -DROP FUNCTION nested_planner_one_t(int); |
| 1175 | +DROP FUNCTION recall_planner_one_t(int); |
1182 | 1176 | |
1183 | 1177 | --No.13-4-7 |
1184 | 1178 | /*+HashJoin(t_1 t_1)*/ |
1185 | 1179 | EXPLAIN (COSTS false) |
1186 | | - SELECT nested_planner(2) FROM s1.t1 t_1 |
| 1180 | + SELECT recall_planner() FROM s1.t1 t_1 |
1187 | 1181 | JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) |
1188 | 1182 | ORDER BY t_1.c1; |
1189 | 1183 | |
1190 | 1184 | --No.13-4-8 |
1191 | 1185 | /*+MergeJoin(t_1 t_2)HashJoin(t_1 t_2)*/ |
1192 | 1186 | EXPLAIN (COSTS false) |
1193 | | - SELECT nested_planner(2) FROM s1.t1 t_1 |
| 1187 | + SELECT recall_planner() FROM s1.t1 t_1 |
1194 | 1188 | JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) |
1195 | 1189 | ORDER BY t_1.c1; |