As long as we are on the performance list and not general, it might be worth noting that partitioning should be defined directly on the data and not on a function result I believe. If you always do the extract year and extract quarter thing, it may work out just fine. But just a regular btree index on the date/timestamp/timestamptz field and partitions like the below might be much easier to work with.
MINVALUE to 2018-01-01 /* the top end is always exclusive so it gets referenced as top on this partition and start of the next partition */ 2018-01-01 to 2018-04-01 2018-04-01 to 2018-07-01 2018-07-01 to 2018-10-01 2018-10-01 to 2019-01-01