|
6 | 6 | *
|
7 | 7 | * 1999 Jan Wieck
|
8 | 8 | *
|
9 |
| - * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.10 1999/12/10 12:34:13 wieck Exp $ |
| 9 | + * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.11 2000/01/06 16:30:43 wieck Exp $ |
10 | 10 | *
|
11 | 11 | * ----------
|
12 | 12 | */
|
@@ -1903,7 +1903,12 @@ RI_FKey_setdefault_del (FmgrInfo *proinfo)
|
1903 | 1903 | qplan = SPI_prepare(querystr, qkey.nkeypairs, queryoids);
|
1904 | 1904 |
|
1905 | 1905 | /* ----------
|
1906 |
| - * Now replace the CONST NULL targetlist expressions |
| 1906 | + * Here now follows very ugly code depending on internals |
| 1907 | + * of the SPI manager. |
| 1908 | + * |
| 1909 | + * EVIL EVIL EVIL (but must be - Jan) |
| 1910 | + * |
| 1911 | + * We replace the CONST NULL targetlist expressions |
1907 | 1912 | * in the generated plan by (any) default values found
|
1908 | 1913 | * in the tuple constructor.
|
1909 | 1914 | * ----------
|
@@ -1931,7 +1936,8 @@ RI_FKey_setdefault_del (FmgrInfo *proinfo)
|
1931 | 1936 | * ----------
|
1932 | 1937 | */
|
1933 | 1938 | spi_qptle = (TargetEntry *)
|
1934 |
| - nth(i, spi_plan->targetlist); |
| 1939 | + nth(defval[j].adnum - 1, |
| 1940 | + spi_plan->targetlist); |
1935 | 1941 | spi_qptle->expr = stringToNode(defval[j].adbin);
|
1936 | 1942 |
|
1937 | 1943 | break;
|
@@ -2188,7 +2194,8 @@ RI_FKey_setdefault_upd (FmgrInfo *proinfo)
|
2188 | 2194 | * ----------
|
2189 | 2195 | */
|
2190 | 2196 | spi_qptle = (TargetEntry *)
|
2191 |
| - nth(i, spi_plan->targetlist); |
| 2197 | + nth(defval[j].adnum - 1, |
| 2198 | + spi_plan->targetlist); |
2192 | 2199 | spi_qptle->expr = stringToNode(defval[j].adbin);
|
2193 | 2200 |
|
2194 | 2201 | break;
|
|
0 commit comments