public inbox for [email protected]help / color / mirror / Atom feed
[PATCH 7/8] Avoid code duplication in map_partition_varattnos() 55+ messages / 2 participants [nested] [flat]
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 6/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 5ca57f44fb..0a50808945 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------CF13DAB8ACCD266FF78EDA60 Content-Type: text/x-diff; name="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0007-Avoid-tuple-coversion-in-common-partitioning-cases.patc"; filename*1="h" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 1/7] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 874e69d8d6..01e0c6c360 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound) List * map_partition_varattnos(List *expr, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, 1, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------80C8914A5808EEA525B2849D Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------80C8914A5808EEA525B2849D-- ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH 7/8] Avoid code duplication in map_partition_varattnos() @ 2017-01-16 05:37 amit <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: amit @ 2017-01-16 05:37 UTC (permalink / raw) Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, pointed out by Álvaro Herrera. --- src/backend/catalog/partition.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 75ec746cb4..a49a2110db 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -915,32 +915,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - Form_pg_attribute attribute = tupdesc->attrs[attno - 1]; - char *attname = NameStr(attribute->attname); - AttrNumber part_attno; - - if (attribute->attisdropped) - continue; - - part_attno = get_attnum(RelationGetRelid(partrel), attname); - part_attnos[attno - 1] = part_attno; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) -- 2.11.0 --------------49BF125E4F135FB3D50EF5A9 Content-Type: text/x-diff; name="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0008-Avoid-DROP-TABLE-.-CASCADE-in-more-partitioning-test.pa"; filename*1="tch" ^ permalink raw reply [nested|flat] 55+ messages in thread
* [PATCH v2 6/7] Row pattern recognition patch (tests). @ 2023-06-26 08:05 Tatsuo Ishii <[email protected]> 0 siblings, 0 replies; 55+ messages in thread From: Tatsuo Ishii @ 2023-06-26 08:05 UTC (permalink / raw) --- src/test/regress/expected/rpr.out | 296 +++++++++++++++++++++++++++++ src/test/regress/parallel_schedule | 2 +- src/test/regress/sql/rpr.sql | 153 +++++++++++++++ 3 files changed, 450 insertions(+), 1 deletion(-) create mode 100644 src/test/regress/expected/rpr.out create mode 100644 src/test/regress/sql/rpr.sql diff --git a/src/test/regress/expected/rpr.out b/src/test/regress/expected/rpr.out new file mode 100644 index 0000000000..6bf8818911 --- /dev/null +++ b/src/test/regress/expected/rpr.out @@ -0,0 +1,296 @@ +-- +-- Test for row pattern definition clause +-- +CREATE TEMP TABLE stock ( + company TEXT, + tdate DATE, + price INTEGER + ); +INSERT INTO stock VALUES ('company1', '2023-07-01', 100); +INSERT INTO stock VALUES ('company1', '2023-07-02', 200); +INSERT INTO stock VALUES ('company1', '2023-07-03', 150); +INSERT INTO stock VALUES ('company1', '2023-07-04', 140); +INSERT INTO stock VALUES ('company1', '2023-07-05', 150); +INSERT INTO stock VALUES ('company1', '2023-07-06', 90); +INSERT INTO stock VALUES ('company1', '2023-07-07', 110); +INSERT INTO stock VALUES ('company1', '2023-07-08', 130); +INSERT INTO stock VALUES ('company1', '2023-07-09', 120); +INSERT INTO stock VALUES ('company1', '2023-07-10', 130); +INSERT INTO stock VALUES ('company2', '2023-07-01', 50); +INSERT INTO stock VALUES ('company2', '2023-07-02', 2000); +INSERT INTO stock VALUES ('company2', '2023-07-03', 1500); +INSERT INTO stock VALUES ('company2', '2023-07-04', 1400); +INSERT INTO stock VALUES ('company2', '2023-07-05', 1500); +INSERT INTO stock VALUES ('company2', '2023-07-06', 60); +INSERT INTO stock VALUES ('company2', '2023-07-07', 1100); +INSERT INTO stock VALUES ('company2', '2023-07-08', 1300); +INSERT INTO stock VALUES ('company2', '2023-07-09', 1200); +INSERT INTO stock VALUES ('company2', '2023-07-10', 1300); +SELECT * FROM stock; + company | tdate | price +----------+------------+------- + company1 | 07-01-2023 | 100 + company1 | 07-02-2023 | 200 + company1 | 07-03-2023 | 150 + company1 | 07-04-2023 | 140 + company1 | 07-05-2023 | 150 + company1 | 07-06-2023 | 90 + company1 | 07-07-2023 | 110 + company1 | 07-08-2023 | 130 + company1 | 07-09-2023 | 120 + company1 | 07-10-2023 | 130 + company2 | 07-01-2023 | 50 + company2 | 07-02-2023 | 2000 + company2 | 07-03-2023 | 1500 + company2 | 07-04-2023 | 1400 + company2 | 07-05-2023 | 1500 + company2 | 07-06-2023 | 60 + company2 | 07-07-2023 | 1100 + company2 | 07-08-2023 | 1300 + company2 | 07-09-2023 | 1200 + company2 | 07-10-2023 | 1300 +(20 rows) + +-- basic test using PREV +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); + company | tdate | price | rpr +----------+------------+-------+----- + company1 | 07-01-2023 | 100 | 100 + company1 | 07-02-2023 | 200 | + company1 | 07-03-2023 | 150 | + company1 | 07-04-2023 | 140 | + company1 | 07-05-2023 | 150 | + company1 | 07-06-2023 | 90 | 90 + company1 | 07-07-2023 | 110 | + company1 | 07-08-2023 | 130 | + company1 | 07-09-2023 | 120 | + company1 | 07-10-2023 | 130 | + company2 | 07-01-2023 | 50 | 50 + company2 | 07-02-2023 | 2000 | + company2 | 07-03-2023 | 1500 | + company2 | 07-04-2023 | 1400 | + company2 | 07-05-2023 | 1500 | + company2 | 07-06-2023 | 60 | 60 + company2 | 07-07-2023 | 1100 | + company2 | 07-08-2023 | 1300 | + company2 | 07-09-2023 | 1200 | + company2 | 07-10-2023 | 1300 | +(20 rows) + +-- the first row start with less than or equal to 100 +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (LOWPRICE UP+ DOWN+) + DEFINE + LOWPRICE AS price <= 100, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); + company | tdate | price | rpr +----------+------------+-------+----- + company1 | 07-01-2023 | 100 | 100 + company1 | 07-02-2023 | 200 | + company1 | 07-03-2023 | 150 | + company1 | 07-04-2023 | 140 | + company1 | 07-05-2023 | 150 | + company1 | 07-06-2023 | 90 | 90 + company1 | 07-07-2023 | 110 | + company1 | 07-08-2023 | 130 | + company1 | 07-09-2023 | 120 | + company1 | 07-10-2023 | 130 | + company2 | 07-01-2023 | 50 | 50 + company2 | 07-02-2023 | 2000 | + company2 | 07-03-2023 | 1500 | + company2 | 07-04-2023 | 1400 | + company2 | 07-05-2023 | 1500 | + company2 | 07-06-2023 | 60 | 60 + company2 | 07-07-2023 | 1100 | + company2 | 07-08-2023 | 1300 | + company2 | 07-09-2023 | 1200 | + company2 | 07-10-2023 | 1300 | +(20 rows) + +-- second row raises 120% +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (LOWPRICE UP+ DOWN+) + DEFINE + LOWPRICE AS price <= 100, + UP AS price > PREV(price) * 1.2, + DOWN AS price < PREV(price) +); + company | tdate | price | rpr +----------+------------+-------+----- + company1 | 07-01-2023 | 100 | 100 + company1 | 07-02-2023 | 200 | + company1 | 07-03-2023 | 150 | + company1 | 07-04-2023 | 140 | + company1 | 07-05-2023 | 150 | + company1 | 07-06-2023 | 90 | + company1 | 07-07-2023 | 110 | + company1 | 07-08-2023 | 130 | + company1 | 07-09-2023 | 120 | + company1 | 07-10-2023 | 130 | + company2 | 07-01-2023 | 50 | 50 + company2 | 07-02-2023 | 2000 | + company2 | 07-03-2023 | 1500 | + company2 | 07-04-2023 | 1400 | + company2 | 07-05-2023 | 1500 | + company2 | 07-06-2023 | 60 | + company2 | 07-07-2023 | 1100 | + company2 | 07-08-2023 | 1300 | + company2 | 07-09-2023 | 1200 | + company2 | 07-10-2023 | 1300 | +(20 rows) + +-- using NEXT +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UPDOWN) + DEFINE + START AS TRUE, + UPDOWN AS price > PREV(price) AND price > NEXT(price) +); + company | tdate | price | rpr +----------+------------+-------+------ + company1 | 07-01-2023 | 100 | 100 + company1 | 07-02-2023 | 200 | + company1 | 07-03-2023 | 150 | + company1 | 07-04-2023 | 140 | 140 + company1 | 07-05-2023 | 150 | + company1 | 07-06-2023 | 90 | + company1 | 07-07-2023 | 110 | 110 + company1 | 07-08-2023 | 130 | + company1 | 07-09-2023 | 120 | + company1 | 07-10-2023 | 130 | + company2 | 07-01-2023 | 50 | 50 + company2 | 07-02-2023 | 2000 | + company2 | 07-03-2023 | 1500 | + company2 | 07-04-2023 | 1400 | 1400 + company2 | 07-05-2023 | 1500 | + company2 | 07-06-2023 | 60 | + company2 | 07-07-2023 | 1100 | 1100 + company2 | 07-08-2023 | 1300 | + company2 | 07-09-2023 | 1200 | + company2 | 07-10-2023 | 1300 | +(20 rows) + +-- using AFTER MATCH SKIP TO NEXT ROW +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + AFTER MATCH SKIP TO NEXT ROW + INITIAL + PATTERN (START UPDOWN) + DEFINE + START AS TRUE, + UPDOWN AS price > PREV(price) AND price > NEXT(price) +); + company | tdate | price | rpr +----------+------------+-------+------ + company1 | 07-01-2023 | 100 | 100 + company1 | 07-02-2023 | 200 | + company1 | 07-03-2023 | 150 | + company1 | 07-04-2023 | 140 | 140 + company1 | 07-05-2023 | 150 | + company1 | 07-06-2023 | 90 | + company1 | 07-07-2023 | 110 | 110 + company1 | 07-08-2023 | 130 | + company1 | 07-09-2023 | 120 | + company1 | 07-10-2023 | 130 | + company2 | 07-01-2023 | 50 | 50 + company2 | 07-02-2023 | 2000 | + company2 | 07-03-2023 | 1500 | + company2 | 07-04-2023 | 1400 | 1400 + company2 | 07-05-2023 | 1500 | + company2 | 07-06-2023 | 60 | + company2 | 07-07-2023 | 1100 | 1100 + company2 | 07-08-2023 | 1300 | + company2 | 07-09-2023 | 1200 | + company2 | 07-10-2023 | 1300 | +(20 rows) + +-- +-- Error cases +-- +-- row pattern definition variable name must not appear more than once +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price), + UP AS price > PREV(price) +); +ERROR: row pattern definition variable name "up" appears more than once in DEFINE clause +LINE 9: UP AS price > PREV(price), + ^ +-- pattern variable name must appear in DEFINE +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+ END) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); +ERROR: syntax error at or near "END" +LINE 6: PATTERN (START UP+ DOWN+ END) + ^ +-- FRAME must start at current row when row patttern recognition is used +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); +ERROR: FRAME must start at current row when row patttern recognition is used +-- SEEK is not supported +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + AFTER MATCH SKIP TO NEXT ROW + SEEK + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); +ERROR: SEEK is not supported +LINE 6: SEEK + ^ +HINT: Use INITIAL. diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index cf46fa3359..ebb741318a 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -98,7 +98,7 @@ test: publication subscription # Another group of parallel tests # select_views depends on create_view # ---------- -test: select_views portals_p2 foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window xmlmap functional_deps advisory_lock indirect_toast equivclass +test: select_views portals_p2 foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window xmlmap functional_deps advisory_lock indirect_toast equivclass rpr # ---------- # Another group of parallel tests (JSON related) diff --git a/src/test/regress/sql/rpr.sql b/src/test/regress/sql/rpr.sql new file mode 100644 index 0000000000..951c9abfe9 --- /dev/null +++ b/src/test/regress/sql/rpr.sql @@ -0,0 +1,153 @@ +-- +-- Test for row pattern definition clause +-- + +CREATE TEMP TABLE stock ( + company TEXT, + tdate DATE, + price INTEGER + ); +INSERT INTO stock VALUES ('company1', '2023-07-01', 100); +INSERT INTO stock VALUES ('company1', '2023-07-02', 200); +INSERT INTO stock VALUES ('company1', '2023-07-03', 150); +INSERT INTO stock VALUES ('company1', '2023-07-04', 140); +INSERT INTO stock VALUES ('company1', '2023-07-05', 150); +INSERT INTO stock VALUES ('company1', '2023-07-06', 90); +INSERT INTO stock VALUES ('company1', '2023-07-07', 110); +INSERT INTO stock VALUES ('company1', '2023-07-08', 130); +INSERT INTO stock VALUES ('company1', '2023-07-09', 120); +INSERT INTO stock VALUES ('company1', '2023-07-10', 130); +INSERT INTO stock VALUES ('company2', '2023-07-01', 50); +INSERT INTO stock VALUES ('company2', '2023-07-02', 2000); +INSERT INTO stock VALUES ('company2', '2023-07-03', 1500); +INSERT INTO stock VALUES ('company2', '2023-07-04', 1400); +INSERT INTO stock VALUES ('company2', '2023-07-05', 1500); +INSERT INTO stock VALUES ('company2', '2023-07-06', 60); +INSERT INTO stock VALUES ('company2', '2023-07-07', 1100); +INSERT INTO stock VALUES ('company2', '2023-07-08', 1300); +INSERT INTO stock VALUES ('company2', '2023-07-09', 1200); +INSERT INTO stock VALUES ('company2', '2023-07-10', 1300); + +SELECT * FROM stock; + +-- basic test using PREV +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); + +-- the first row start with less than or equal to 100 +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (LOWPRICE UP+ DOWN+) + DEFINE + LOWPRICE AS price <= 100, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); + +-- second row raises 120% +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (LOWPRICE UP+ DOWN+) + DEFINE + LOWPRICE AS price <= 100, + UP AS price > PREV(price) * 1.2, + DOWN AS price < PREV(price) +); + +-- using NEXT +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UPDOWN) + DEFINE + START AS TRUE, + UPDOWN AS price > PREV(price) AND price > NEXT(price) +); + +-- using AFTER MATCH SKIP TO NEXT ROW +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + AFTER MATCH SKIP TO NEXT ROW + INITIAL + PATTERN (START UPDOWN) + DEFINE + START AS TRUE, + UPDOWN AS price > PREV(price) AND price > NEXT(price) +); + +-- +-- Error cases +-- + +-- row pattern definition variable name must not appear more than once +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price), + UP AS price > PREV(price) +); + +-- pattern variable name must appear in DEFINE +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+ END) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); + +-- FRAME must start at current row when row patttern recognition is used +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING + INITIAL + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); + +-- SEEK is not supported +SELECT company, tdate, price, rpr(price) OVER w FROM stock + WINDOW w AS ( + PARTITION BY company + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + AFTER MATCH SKIP TO NEXT ROW + SEEK + PATTERN (START UP+ DOWN+) + DEFINE + START AS TRUE, + UP AS price > PREV(price), + DOWN AS price < PREV(price) +); -- 2.25.1 ----Next_Part(Mon_Jun_26_17_45_07_2023_724)---- ^ permalink raw reply [nested|flat] 55+ messages in thread
end of thread, other threads:[~2023-06-26 08:05 UTC | newest] Thread overview: 55+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 6/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 1/7] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2017-01-16 05:37 [PATCH 7/8] Avoid code duplication in map_partition_varattnos() amit <[email protected]> 2023-06-26 08:05 [PATCH v2 6/7] Row pattern recognition patch (tests). Tatsuo Ishii <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox