:PROPERTIES: :ID: 305b4103-a9a8-492a-8431-c203f57d2bd0 :END: #+title: 2021-11-08 * Planning future backend work Meeting with Scott and Eric. #+caption: Last week | Number clicked column to account backup | 4h | | CSLead Tickets | EOW | | Tagbox upgrades | EOW | | Remove outbound tag sanitization | EOW | | Analytics search testing | ??? | | OpenAPI newline pattern validation | Tomorrow | | Start on Search Service | Next week | #+caption: This week | CSLead Tickets | Today | | Analytics View | This week (Eric) | | Search | This week (Correl) | | Verifications | Tech Initiatives sync | * [[id:1463cf0a-e2b2-490c-b1b3-40249b483ca8][Bulk Job]] ACP discussion - Could deleting duplicate subscribers across lists belong in the Control Panel? - Why would we want to pause a job? - More likely to be an internal issue, pausing processing to relieve system pressure - Differences between customer-initiated jobs and internally (PSE/ASE) initiated jobs - Any future plans for bulk actions in the CP? - Deleting duplicate subscribers across lists csreq? - Nothing prioritized right now. * Searching any/all tags with quotation marks https://jira.aweber.io/browse/CCPANEL-10726 The [[id:d9cb2b55-3b0e-4ab3-8369-f71ebc3cd882][search]] code is escaping the characters, but string literals appear to handle escaping differently between different versions of [[id:af84ed59-96a4-4f9c-b34c-b79178ad20cb][PostgreSQL]]. Versions 9.1 and above default the =standard_conforming_strings= setting to =on=, which permits escaping. The [[id:dd113e53-6144-4cb2-a4aa-da3dc2e3e6ea][AppDB]] PostgreSQL version in staging and production are on 9.0.23, and have the setting turned to =off=. Because of how search is currently built, in order to support searching on multiple values, these values are being encoded as [[https://www.postgresql.org/docs/9.1/arrays.html#ARRAYS-IO][string array literals]]. The additional escaping needed for this format are running afoul of PostgreSQL's string handling: With standard conforming strings on #+begin_example postgres=# select '{"foo","bar","\"baz"}'::text[]; text ------------------- {foo,bar,"\"baz"} (1 row) #+end_example With standard conforming strings off #+begin_example app-txn=> select '{"foo","bar","\"baz"}'::text[]; WARNING: nonstandard use of escape in a string literal LINE 1: select '{"foo","bar","\"baz"}'::text[]; ^ HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. ERROR: malformed array literal: "{"foo","bar",""baz"}" LINE 1: select '{"foo","bar","\"baz"}'::text[]; ^ #+end_example