:PROPERTIES: :ID: 091bce6d-e15b-434f-a7be-bc6627a71925 :END: #+title: 2022-04-06 * Fixing normalized tag search https://jira.aweber.io/browse/ASE-8617 - *What was broken?* :: Searches and segments with a "tag is not" constraint failed to match subscribers with no tags. - *When was it broken?* :: April 5th at 16:00, following the release of CCPANEL-12034. - *What did you do to fix the problem?* :: The change was rolled back by updating search terms in the analytics search database to their previous values at 19:12 on April 5th. - *How many customers did it likely impact?* :: Likely all customers using the "tag not in" filter in their searches and segments. - *Is the issue automatically fixed for all customers now?* :: Yes. - *Does the customer or CS need to manually do something to fix their account?* :: No. - *Should a new monitoring check, metric, or test be created to prevent this from happening again?* :: Additional tests will be added to ensure future releases of this feature do not break search and segment behavior. ** What happened? =ARRAY_AGG= returns =NULL= when given an empty set. This breaks the tag comparison, as =NOT(NULL @> ARRAY['tag'])= is equal to =NULL=, not =TRUE=. Updating the logic to =COALESCE= null values with an empty array allows the comparison to function as intended. =normalize_tags= must also omit invalid tags (tags that normalize to the empty string) from its results.