diff --git a/hypopg_index.c b/hypopg_index.c index bf7ca38..d03d554 100644 --- a/hypopg_index.c +++ b/hypopg_index.c @@ -1013,21 +1013,17 @@ hypo_injectHypotheticalIndex(PlannerInfo *root, #endif index->indexkeys = (int *) palloc(sizeof(int) * ncolumns); - index->indexcollations = (Oid *) palloc(sizeof(int) * ncolumns); - index->opfamily = (Oid *) palloc(sizeof(int) * ncolumns); - index->opcintype = (Oid *) palloc(sizeof(int) * ncolumns); - -#if PG_VERSION_NUM >= 90500 - index->canreturn = (bool *) palloc(sizeof(bool) * ncolumns); -#endif + index->indexcollations = (Oid *) palloc(sizeof(int) * nkeycolumns); + index->opfamily = (Oid *) palloc(sizeof(int) * nkeycolumns); + index->opcintype = (Oid *) palloc(sizeof(int) * nkeycolumns); if ((index->relam == BTREE_AM_OID) || entry->amcanorder) { if (index->relam != BTREE_AM_OID) - index->sortopfamily = palloc0(sizeof(Oid) * ncolumns); + index->sortopfamily = palloc0(sizeof(Oid) * nkeycolumns); - index->reverse_sort = (bool *) palloc(sizeof(bool) * ncolumns); - index->nulls_first = (bool *) palloc(sizeof(bool) * ncolumns); + index->reverse_sort = (bool *) palloc(sizeof(bool) * nkeycolumns); + index->nulls_first = (bool *) palloc(sizeof(bool) * nkeycolumns); } else { @@ -1036,6 +1032,10 @@ hypo_injectHypotheticalIndex(PlannerInfo *root, index->nulls_first = NULL; } +#if PG_VERSION_NUM >= 90500 + index->canreturn = (bool *) palloc(sizeof(bool) * ncolumns); +#endif + for (i = 0; i < ncolumns; i++) { index->indexkeys[i] = entry->indexkeys[i]; @@ -1046,9 +1046,9 @@ hypo_injectHypotheticalIndex(PlannerInfo *root, for (i = 0; i < nkeycolumns; i++) { + index->indexcollations[i] = entry->indexcollations[i]; index->opfamily[i] = entry->opfamily[i]; index->opcintype[i] = entry->opcintype[i]; - index->indexcollations[i] = entry->indexcollations[i]; } /* @@ -1064,7 +1064,7 @@ hypo_injectHypotheticalIndex(PlannerInfo *root, */ index->sortopfamily = index->opfamily; - for (i = 0; i < ncolumns; i++) + for (i = 0; i < nkeycolumns; i++) { index->reverse_sort[i] = entry->reverse_sort[i]; index->nulls_first[i] = entry->nulls_first[i]; @@ -1074,7 +1074,7 @@ hypo_injectHypotheticalIndex(PlannerInfo *root, { if (entry->sortopfamily) { - for (i = 0; i < ncolumns; i++) + for (i = 0; i < nkeycolumns; i++) { index->sortopfamily[i] = entry->sortopfamily[i]; index->reverse_sort[i] = entry->reverse_sort[i];