Categories
Community News WooCommerce Core

High-Performance Order Storage: Invitation to the upgrade party

We’re getting close to shipping our High-Performance Order Storage (HPOS) solution (previously “Custom Order Tables”). We know that this project’s success depends on having as many extensions compatible with HPOS as possible. 

To make it easier for you as an extension developer to make your extensions compatible, we invite you to the HPOS upgrade party! 🎉 WooCommerce core developers will assist you in making your extension compatible. 💪

What is an upgrade party?

An upgrade party is a two-day hackathon-type festival where we hope to get as many extensions compatible as possible. It represents our pledge to the community to assist extension developers and make the experience of updating to HPOS smooth and delightful.

If you want a head start, you can take a peek at the upgrade guide. WooCommerce core developers will be present in the Community Slack where we created #upgrade-party channel for this purpose. We’re open to answering any questions and can offer guidance, help you scope, or assist with coding if needed. We’ll also be updating the upgrade guide and fixing discovered bugs in our code on the fly to ensure a quick feedback loop and ensure you can upgrade as smooth as possible. 

We’re going to be focusing on quick responses in the Slack channel from 6:00 UTC to 20:00 UTC during the upgrade party, but feel free to drop your questions anytime, and we will also answer open questions asynchronously when we come online. We will have the best coverage between 8:00 UTC and 14:00 UTC.

For any asynchronous requests or longer form discussions, we can also utilize the GitHub discussion forum, where we have created a new category dedicated to the upgrade party.

When

September 26th–27th between 6:00 and 20:00 UTC, with the best coverage between 8:00 and 14:00 UTC.

If there’s more demand from the community, we’re happy to repeat this format in the future.

Pre-requisites

You don’t need to prepare for the upgrade party. However, if you’d like a head start on understanding the context, we recommend reading through the documentation linked from the progress report and having a look at the upgrade guide. It would also be helpful if you tried to test out installation and setup using the steps described in the latest call for testing.

Just be prepared to roll your sleeves up, have fun and do some coding with help from the core WooCommerce team.

Upgrade package

The upgrade package will be available on the release page in GitHub. We’ll be updating it continuously as we fix problems reported in testing and during the upgrade party. 

When should extensions be compatible?

We’d like extensions and custom code to work with HPOS as soon as possible. This will allow your users to confidently use HPOS and experience a better, more performant WooCommerce platform. It would also allow you to work with orders in a more flexible way, e.g., by taking advantage of faster bulk operations, import / export of orders, or archiving. 

To make sure extensions will have plenty of time to migrate we plan to stop synchronizing orders to posts and postmeta tables with WooCommerce 8.0 in August 2023. 

Orders will stop being synchronized to posts and postmeta tables in WooCommerce 8.0 in August 2023!

Where should bugs be reported?

Please surface bugs in the Slack channel or GitHub discussion first to assess whether it needs an expedited fix and update to the testing zip package. Then we might ask you to create an issue on GitHub.

7 replies on “High-Performance Order Storage: Invitation to the upgrade party”

This is good news. I’m already working on my solutions to accommodate the new tables, I would just have a question. How does one translate the queries that, currently, fetch custom order meta from the post_meta table, to the new structure? For example, if there is a query that uses a

JOIN wp_postmeta
WHERE meta_key = ‘some_custom_order_meta’

How should that be written, to do the exact same thing with the new tables?

Liked by 1 person

I think something like this should do the job if you really need to use SQL queries (please consider using the APIs instead, if possible! :)):

SELECT *
FROM wp_wc_orders
JOIN wp_wc_orders_meta ON (wp_wc_orders.id = wp_wc_orders_meta.order_id)
WHERE wp_wc_orders_meta.meta_key = ‘some_custom_order_meta’;

Liked by 1 person

In my specific case, SQL must be used because I’m extending the Analytics, following the official guidelines: https://developer.woocommerce.com/2020/02/20/extending-wc-admin-reports/. That can’t be done by looping through records (and it shouldn’t, ever be done that way 😄.

Apart from that, it’s a known fact that I prefer optimised SQL over loops every time performance is key (which is also a reason why I like the new tables 👍, and I never really liked the “use posts for everything” approach). Also, in relation to performance, looping through records is a big no-no with relational databases. A manual query may involve some maintenance, from time to time, but, as long as it’s done with care and only when really needed (see analytics), it can easily be handled by versioning or namespacing. 🙂

Like

I tried it in a site with about 1500 completed orders using the multilanguage plugin Polylang and the Hyyan WooCommerce Polylang Integration companion plugin and when I visit the orders admin screen I see no orders and if I run the “wp wc cot sync” command, it says that “There are 0 orders to be synced”.

Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.