Issue with the generated query by path module

Created on 12 August 2020, almost 4 years ago
Updated 1 August 2023, 11 months ago

Problem/Motivation

When a Url is generated (e.g Url::fromRoute('entity.path_alias.collection')->toString()), the AliasManager is used in AliasPathProcessor::processOutbound to try to find an alias by the path.

In getAliasByPath there is a preload function that takes a list of urls based on the root of the path and tries to find an alias for all of them. For example, if the path is /admin/config/search/path it will find every path that starts with /admin and try to find its alias. This depends on links that are rendered in the request itself, so when something like admin_toolbar is in the mix this will include every single admin link.

This is done in AliasRepository::preloadPathAlias.

The problem is that for large sites there may be hundreds or thousands of paths that start with /admin. Or any other common path prefix, but I imagine /admin is the most common one for people experiencing this issue.

This results in a query with as many OR conditions as there are paths. In our case this is over 1000 OR conditions resulting in multisecond long queries.

This is only a problem if the AliasWhitelist contains a TRUE for /admin. That happens if there are any aliases on the site for something that starts with /admin.

Steps to reproduce

  1. Install the standard profile on 10.1.x
  2. Go to /admin/config/search/path/add and add a new url alias with /admin/content as the system path and /foo as the alias
  3. Go to any page that renders a URL that starts with /admin. The one I was testing with is /admin/help/path which renders a link to the url alias collection page.
  4. Stick a breakpoint in AliasRepository::preloadPathAlias (Note that if it doesn't break, reload the page, this is only hit when the cache is primed)
  5. Notice there are roughly 70 values in $preloaded which results in 70 OR conditions

70 OR conditions on the most basic install profile is not great. This only gets worse as you add modules, entities with /admin paths, etc.

Proposed resolution

Originally I thought we could squash down these paths in $preloaded because we have things like
WHERE path like /admin OR path like /admin/content

But the LIKE operator here is a red herring, we're not using the wildcards so effectively these are just WHERE path = /admin.

So really not sure how best to improve this...

Original report

The query generated has more than 10,000 "OR" conditions and it's causing high load on the server with 100+ similar queries.

SELECT base_table.path AS path, base_table.alias AS alias FROM path_alias base_table WHERE (base_table.status = '1') AND ((base_table.path LIKE '/node/382610' ESCAPE '\\') OR (base_table.path LIKE '/node/491282' ESCAPE '\\ ') OR (base_table.path LIKE '/node/445699' ESCAPE '\\') OR (base_table.path LIKE '/node/388747' ESCAPE '\\') OR (base_table.path LIKE '/n ode/186646' ESCAPE '\\') OR (base_table.path LIKE '/node/198203' ESCAPE '\\') OR (base_table.path LIKE '/node/350868' ESCAPE '\\') OR (ba se_table.path LIKE '/node/80104' ESCAPE '\\') OR (base_table.path LIKE '/node/365460' ESCAPE '\\') OR (base_table.path LIKE '/node/307019 ' ESCAPE '\\') OR (base_table.path LIKE '/node/308080' ESCAPE '\\')
...
...
....
OR (base_table.path LIKE '/media/665076' ESCAPE '\\') OR (base_table.path LIKE '/media/685093' ESCAPE '\\') OR (base_table.path LIKE '/media/660094' ESCAPE '\\') OR (base_table.path LIKE '/media/683424' ESCAPE '\\') OR (base_table.path LIKE '/media/654878' ESCAPE '\\') OR (base_table.path LIKE '/media/674423' ESCAPE '\\') OR (base_table.path LIKE '/media/667311' ESCAPE '\\') OR (base_table.path LIKE '/media/647247' ESCAPE '\\') OR (base_table.path LIKE '/media/674130' ESCAPE '\\') OR (base_table.path LIKE '/media/643779' ESCAPE '\\') OR (base_table.path LIKE '/media/655160' ESCAPE '\\') OR (base_table.path LIKE '/media/654879' ESCAPE '\\') OR (base_table.path LIKE '/media/656751' ESCAPE '\\') OR (base_table.path LIKE '/media/648142' ESCAPE '\\') OR (base_table.path LIKE '/media/646527' ESCAPE '\\') OR (base_table.path LIKE '/media/684514' ESCAPE '\\') OR (base_table.path LIKE '/media/645594' ESCAPE '\\') OR (base_table.path LIKE '/media/644911' ESCAPE '\\') OR (base_table.path LIKE '/media/645227' ESCAPE '\\') OR (base_table.path LIKE '/media/644260' ESCAPE '\\') OR (base_table.path LIKE '/media/653902' ESCAPE '\\') OR (base_table.path LIKE '/media/643521' ESCAPE '\\') OR (base_table.path LIKE '/media/678501' ESCAPE '\\')) AND (base_table.langcode IN ('ar', 'und')) ORDER BY base_table.langcode ASC, base_table.id ASC

🐛 Bug report
Status

Needs work

Version

11.0 🔥

Component
Path 

Last updated 6 days ago

  • Maintained by
  • 🇬🇧United Kingdom @catch
Created by

🇯🇴Jordan Ammar Qala

Live updates comments and jobs are added and updated live.
  • Performance

    It affects performance. It is often combined with the Needs profiling tag.

  • Needs tests

    The change is currently missing an automated test that fails when run with the original code, and succeeds when the bug has been fixed.

Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • 🇨🇭Switzerland rpresedo Carouge

    Is there any plan to move this to the core, or must we continue to apply the patch in our future Drupal websites ?

  • Status changed to Needs work over 1 year ago
  • The Needs Review Queue Bot tested this issue. It either no longer applies to Drupal core, or fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

    Apart from a re-roll or rebase, this issue may need more work to address feedback in the issue or MR comments. To progress an issue, incorporate this feedback as part of the process of updating the issue. This helps other contributors to know what is outstanding.

    Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

  • 🇵🇭Philippines verper

    New update patch uploaded. Working on drupal 9 and above.

  • Status changed to Downport over 1 year ago
  • Status changed to Needs review over 1 year ago
  • 🇸🇰Slovakia poker10

    I think the correct status here is Needs Review, as the new patch was uploaded.

  • 🇵🇭Philippines verper

    @poker10 thanks for editing

    no problem with comment #15. I just updated my core to latest drupal 9 and other modules before updating the patch. If this patch did not work for them is maybe they have the lower version and they may use the lower version of patches too.

  • 🇺🇸United States SamLerner

    I tested the patch in #29 on my Drupal 9.5.2 site, and it applies fine and still works as expected. I'd say this is good to go.

  • Status changed to Needs work about 1 year ago
  • 🇺🇸United States smustgrave

    Can the issue summary be updated to include what the proposed fix is.

    Going to reach out to the #needs-review-queue-initaitve channel to see if this will need tests.

  • 🇬🇧United Kingdom SirClickALot Somerset

    Problem/Motivation

    I am experiencing very slow performance on backend pages such as node form building and in particular AJAX requests like 'Add another'.

    There seems to be a whole lot of instances of similar issues across DO and many people trying to offer ideas.

    One of those is the try Web Profiler and have given that a go and noticed something very interesting.

    I notice that when visiting one particularly slow node/add page I get...

    Time: 4.71 ms Caller: D\p\AliasRepository::preloadPathAlias

    This seems fine since it's below 5ms.

    However, when visiting one particularly slow node/add page I get...

    Time: 1318.97 ms Caller: D\p\AliasRepository::preloadPathAlias

    1.3 seconds seems a bit nasty!

    Attempting patch core

    Looking into the issue queue for the core on the subject, I noted this 🐛 Issue with the generated query by path module Needs work and so I applied patch ( https://www.drupal.org/files/issues/2023-03-08/drupal-chunk_preloaded_al... ).

    This appeared to reduce the query a bit but it's still way too long.

    Time: 1062.95 ms Caller: D\p\AliasRepository::preloadPathAlias

    Just wanted put that out there to see if anyone has any tips / advice?

    Thank you

    Finer detail

    My system

    Drupal Version 9.5.9
    Web server: Apache/2.4.33 (Win64) OpenSSL/1.0.2u mod_fcgid/2.3.9
    Database: MySQL  5.7.24
    PHP: 8.1.0

    SQL query

    Here is the actual 1 second query AFTER appling the patch...

    SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = :db_condition_placeholder_0) AND (("base_table"."path" LIKE :db_condition_placeholder_1 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_2 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_3 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_4 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_5 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_6 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_7 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_8 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_9 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_10 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_11 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_12 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_13 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_14 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_15 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_16 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_17 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_18 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_19 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_20 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_21 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_22 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_23 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_24 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_25 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_26 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_27 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_28 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_29 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_30 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_31 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_32 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_33 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_34 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_35 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_36 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_37 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_38 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_39 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_40 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_41 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_42 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_43 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_44 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_45 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_46 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_47 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_48 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_49 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_50 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_51 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_52 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_53 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_54 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_55 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_56 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_57 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_58 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_59 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_60 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_61 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_62 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_63 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_64 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_65 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_66 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_67 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_68 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_69 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_70 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_71 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_72 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_73 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_74 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_75 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_76 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_77 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_78 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_79 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_80 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_81 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_82 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_83 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_84 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_85 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_86 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_87 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_88 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_89 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_90 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_91 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_92 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_93 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_94 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_95 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_96 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_97 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_98 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_99 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_100 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_101 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_102 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_103 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_104 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_105 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_106 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_107 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_108 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_109 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_110 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_111 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_112 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_113 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_114 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_115 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_116 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_117 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_118 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_119 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_120 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_121 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_122 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_123 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_124 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_125 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_126 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_127 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_128 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_129 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_130 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_131 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_132 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_133 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_134 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_135 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_136 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_137 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_138 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_139 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_140 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_141 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_142 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_143 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_144 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_145 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_146 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_147 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_148 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_149 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_150 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_151 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_152 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_153 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_154 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_155 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_156 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_157 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_158 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_159 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_160 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_161 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_162 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_163 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_164 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_165 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_166 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_167 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_168 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_169 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_170 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_171 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_172 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_173 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_174 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_175 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_176 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_177 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_178 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_179 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_180 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_181 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_182 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_183 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_184 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_185 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_186 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_187 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_188 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_189 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_190 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_191 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_192 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_193 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_194 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_195 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_196 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_197 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_198 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_199 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_200 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_201 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_202 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_203 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_204 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_205 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_206 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_207 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_208 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_209 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_210 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_211 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_212 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_213 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_214 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_215 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_216 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_217 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_218 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_219 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_220 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_221 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_222 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_223 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_224 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_225 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_226 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_227 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_228 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_229 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_230 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_231 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_232 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_233 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_234 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_235 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_236 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_237 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_238 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_239 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_240 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_241 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_242 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_243 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_244 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_245 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_246 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_247 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_248 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_249 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_250 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_251 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_252 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_253 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_254 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_255 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_256 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_257 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_258 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_259 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_260 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_261 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_262 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_263 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_264 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_265 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_266 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_267 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_268 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_269 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_270 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_271 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_272 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_273 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_274 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_275 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_276 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_277 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_278 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_279 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_280 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_281 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_282 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_283 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_284 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_285 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_286 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_287 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_288 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_289 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_290 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_291 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_292 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_293 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_294 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_295 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_296 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_297 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_298 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_299 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_300 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_301 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_302 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_303 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_304 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_305 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_306 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_307 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_308 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_309 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_310 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_311 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_312 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_313 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_314 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_315 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_316 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_317 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_318 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_319 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_320 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_321 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_322 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_323 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_324 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_325 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_326 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_327 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_328 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_329 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_330 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_331 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_332 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_333 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_334 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_335 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_336 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_337 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_338 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_339 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_340 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_341 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_342 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_343 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_344 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_345 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_346 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_347 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_348 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_349 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_350 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_351 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_352 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_353 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_354 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_355 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_356 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_357 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_358 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_359 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_360 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_361 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_362 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_363 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_364 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_365 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_366 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_367 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_368 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_369 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_370 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_371 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_372 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_373 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_374 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_375 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_376 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_377 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_378 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_379 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_380 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_381 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_382 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_383 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_384 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_385 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_386 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_387 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_388 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_389 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_390 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_391 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_392 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_393 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_394 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_395 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_396 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_397 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_398 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_399 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_400 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_401 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_402 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_403 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_404 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_405 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_406 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_407 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_408 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_409 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_410 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_411 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_412 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_413 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_414 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_415 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_416 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_417 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_418 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_419 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_420 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_421 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_422 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_423 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_424 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_425 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_426 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_427 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_428 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_429 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_430 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_431 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_432 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_433 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_434 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_435 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_436 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_437 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_438 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_439 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_440 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_441 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_442 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_443 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_444 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_445 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_446 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_447 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_448 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_449 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_450 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_451 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_452 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_453 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_454 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_455 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_456 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_457 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_458 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_459 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_460 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_461 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_462 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_463 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_464 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_465 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_466 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_467 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_468 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_469 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_470 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_471 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_472 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_473 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_474 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_475 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_476 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_477 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_478 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_479 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_480 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_481 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_482 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_483 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_484 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_485 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_486 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_487 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_488 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_489 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_490 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_491 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_492 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_493 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_494 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_495 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_496 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_497 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_498 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_499 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_500 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_501 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_502 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_503 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_504 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_505 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_506 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_507 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_508 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_509 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_510 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_511 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_512 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_513 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_514 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_515 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_516 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_517 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_518 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_519 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_520 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_521 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_522 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_523 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_524 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_525 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_526 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_527 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_528 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_529 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_530 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_531 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_532 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_533 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_534 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_535 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_536 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_537 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_538 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_539 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_540 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_541 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_542 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_543 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_544 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_545 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_546 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_547 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_548 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_549 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_550 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_551 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_552 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_553 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_554 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_555 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_556 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_557 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_558 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_559 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_560 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_561 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_562 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_563 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_564 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_565 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_566 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_567 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_568 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_569 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_570 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_571 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_572 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_573 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_574 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_575 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_576 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_577 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_578 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_579 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_580 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_581 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_582 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_583 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_584 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_585 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_586 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_587 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_588 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_589 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_590 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_591 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_592 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_593 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_594 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_595 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_596 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_597 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_598 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_599 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_600 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_601 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_602 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_603 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_604 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_605 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_606 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_607 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_608 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_609 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_610 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_611 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_612 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_613 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_614 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_615 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_616 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_617 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_618 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_619 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_620 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_621 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_622 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_623 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_624 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_625 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_626 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_627 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_628 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_629 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_630 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_631 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_632 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_633 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_634 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_635 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_636 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_637 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_638 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_639 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_640 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_641 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_642 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_643 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_644 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_645 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_646 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_647 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_648 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_649 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_650 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_651 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_652 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_653 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_654 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_655 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_656 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_657 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_658 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_659 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_660 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_661 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_662 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_663 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_664 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_665 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_666 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_667 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_668 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_669 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_670 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_671 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_672 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_673 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_674 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_675 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_676 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_677 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_678 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_679 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_680 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_681 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_682 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_683 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_684 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_685 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_686 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_687 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_688 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_689 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_690 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_691 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_692 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_693 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_694 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_695 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_696 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_697 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_698 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_699 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_700 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_701 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_702 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_703 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_704 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_705 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_706 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_707 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_708 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_709 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_710 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_711 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_712 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_713 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_714 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_715 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_716 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_717 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_718 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_719 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_720 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_721 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_722 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_723 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_724 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_725 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_726 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_727 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_728 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_729 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_730 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_731 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_732 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_733 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_734 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_735 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_736 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_737 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_738 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_739 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_740 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_741 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_742 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_743 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_744 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_745 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_746 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_747 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_748 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_749 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_750 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_751 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_752 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_753 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_754 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_755 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_756 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_757 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_758 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_759 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_760 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_761 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_762 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_763 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_764 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_765 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_766 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_767 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_768 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_769 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_770 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_771 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_772 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_773 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_774 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_775 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_776 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_777 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_778 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_779 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_780 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_781 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_782 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_783 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_784 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_785 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_786 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_787 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_788 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_789 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_790 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_791 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_792 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_793 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_794 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_795 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_796 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_797 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_798 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_799 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_800 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_801 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_802 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_803 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_804 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_805 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_806 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_807 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_808 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_809 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_810 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_811 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_812 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_813 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_814 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_815 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_816 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_817 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_818 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_819 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_820 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_821 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_822 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_823 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_824 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_825 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_826 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_827 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_828 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_829 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_830 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_831 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_832 ESCAPE '\\') OR ("base_table"."path" LIKE :db_condition_placeholder_833 ESCAPE '\\')) AND ("base_table"."langcode" IN (:db_condition_placeholder_834, :db_condition_placeholder_835)) ORDER BY "base_table"."langcode" ASC, "base_table"."id" ASC

  • 🇮🇹Italy kopeboy Mainland

    I'm seeing a similar long list of queries in Views just when I activate the Link to the node title (or term name) or the entity operations links, even if it doesn't have a path alias!

    SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias"
    FROM "path_alias" "base_table"
    WHERE ("base_table"."status" = 1) AND (("base_table"."path" LIKE /taxonomy/term/1423 ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/1423/edit ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/1423/delete ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/1429 ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/1429/edit ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/1429/delete ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/160 ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/2052 ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/2052/edit ESCAPE '\\') OR ("base_table"."path" LIKE /taxonomy/term/2052/delete ESCAPE '\\') OR...
  • 🇦🇺Australia acbramley

    We've just noticed this issue on our platform too, with these queries taking multiple seconds to complete.

    For us, this seems to come from a pretty whacky code path.

    PathautoWidget::formElement generates a url like this: Url::fromRoute('entity.pathauto_pattern.collection')->toString()

    The path for this URL is /admin/config/search/path/patterns

    We have an alias pattern in our site that starts with /admin

    This results in the AliasWhitelist containing /admin, which means every single admin path is added as an OR condition in preloadPathAlias, in our case this is over 1000 paths.

    At the very least, the redundant patterns should be squashed. I.e why do we need to search for LIKE /admin OR LIKE /admin/config OR LIKE /admin/config/search, etc, etc

    I would consider this a bug given the prevalence of it and there seems to be a fairly simple way to reduce the number of conditions at least.

  • 🇦🇺Australia acbramley

    IS updated

  • last update 11 months ago
    29,822 pass
  • @acbramley opened merge request.
  • Status changed to Needs review 11 months ago
  • 🇦🇺Australia acbramley

    Chunking these queries is not really a valid solution and imo could make things worse (multiple queries with lots of conditions vs one), hiding those patches

    What if we just used an IN operator? MR pushed, setting to NR to see if anything fails and get feedback.

  • 🇦🇺Australia mstrelan

    #41 I'm guessing this is going to fail on postgres, looks like the LIKEs were added for case-insensitive matching in #2584243: Make Drupal handle path aliases in a consistent and case-insensitive fashion on all database drivers . Triggering test run on postgres and sqlite.

  • Open in Jenkins → Open on Drupal.org →
    Environment: PHP 8.2 & pgsql-14.1
    last update 11 months ago
    29,822 pass
  • Open in Jenkins → Open on Drupal.org →
    Environment: PHP 8.2 & sqlite-3.34
    last update 11 months ago
    29,822 pass
  • 🇫🇷France fgm Paris, France

    You could look at the optimizations we do around this in the Redis (any version ?) and MongoDB (D7) modules https://www.drupal.org/project/mongodb/issues/2538542 : in both cases, maintainers spent time optimizing that particular query path.

  • 🇨🇭Switzerland Berdir Switzerland

    I haven't read the full issue, but in several places, it mentions about loading all aliases with the /admin path on an admin page. I'm pretty certain that is not the case. It wouldn't need to do a hundred conditions then, it could do a prefix check. What it does is preload aliases for paths that have been rendered on a given page. This in AliasManager and the cache key for it is set in \Drupal\path_alias\EventSubscriber\PathAliasSubscriber::onKernelController to the current path.

    So if you have this problem on admin pages, I think two conditions are true

    a) you are rendering hundreds of links (admin toolbar I guess, maybe something else too)
    b) You do have at least one alias for an admin page.

    The easiest workaround should be to not have such an alias, if you can manage. A more advanced solution would be to improve the caching logic around it. For example, I could imagine that a check for the total amount of links and just stop preloading at a 100 or something.

    The problem is that these alias lookups will still happen. Instead of a query with 101 conditions, you'll get 101 separate queries, which I doubt will be much better?

  • 🇬🇧United Kingdom catch

    #44 is correct. The issue is that as soon as you have a single path alias for something under admin/*, admin/* gets added to the allow list, then we need to check if any path under admin has an alias. This means if every admin link is rendered on one page, the cache entry will include all of them - since we cache the non-existence of aliases too to prevent hundreds of no-op lookups.

    Using IN() for mysql is an option here, it would require using backend_overridable but we already have that tag on the path alias repository.

    Chunking also seems like an option to be honest - it could result in 2-5 database queries, but that's better than 1000+ which is what we'd be doing without this caching, but it needs to be chunked at a level where it's still one query on most requests. Maybe that should be the behaviour for postgresql?

  • 🇦🇺Australia acbramley

    Yeah, I tried to explain #44 and #45 in the IS, although I wasn't aware it was due to rendering every admin link on a single request which makes a lot of sense. I'll add that detail.

  • 🇦🇺Australia acbramley

    The easiest workaround should be to not have such an alias, if you can manage.

    FYI - we went with this approach and scrapped aliases on Linky entities and the performance issues disappeared :)

  • 🇦🇺Australia acbramley

    I'm not convinced admin_toolbar is the main culprit here. Even on the standard profile I'm getting 67 URLs on /admin/help/path which includes many menu links that don't seem to be rendered?

  • 🇦🇺Australia acbramley

    Enabling admin_toolbar does not increase that number at all, enabling admin_toolbar_tools does increase it (up to 183) but that's expected because it adds a lot more menu items. Going to dig into what's actually building that array of urls.

  • Open on Drupal.org →
    Environment: PHP 8.2 & MySQL 8
    last update 11 months ago
    Waiting for branch to pass
  • 🇦🇺Australia acbramley

    pgsql specific override added with the LIKE conditions and chunking of the $preloaded urls as per #45

  • 🇦🇺Australia acbramley

    Going to dig into what's actually building that array of urls.

    It's because paths with no aliases are written to the same cache entry that is used to preload aliases... this seems counterintuitive but again I don't fully understand this system enough to say whether this is wrong or not.

    In AliasManager::writeCache:

    if (!empty($this->noAlias[$langcode])) {
      $path_lookups[$langcode] = array_merge($path_lookups[$langcode], array_keys($this->noAlias[$langcode]));
    }
    

    $this->noAlias is generated alongside the preloaded aliases with:

    $this->noAlias[$langcode] = array_flip(array_diff($this->preloadedPathLookups[$langcode], array_keys($this->lookupMap[$langcode])));
    

    Essentially doing what it says it does - storing a list of paths that don't have an alias. Why are these paths then written to a cache key which is used to preload aliases for that path?

    if ($cached = $this->cache->get($this->cacheKey)) {
      $this->preloadedPathLookups = $cached->data;
    }
    

    It seems like the noAlias paths were added to the cache in #2233623: Merge AliasManagerCacheDecorator into AliasManager - before this (in a much older system) it looks like it was just the path lookups.

  • 🇦🇺Australia acbramley

    As expected, removing the chunk that merges in the noAlias path results in a single url in $preloaded which is the path I have an alias for (/admin/content)

  • 🇦🇺Australia mstrelan

    FWIW I've noticed the issue is much worse on MySQL 5.7 than it is on 8.0 or MariaDB 10.10, using the same project as @acbramley in #38. Attaching an EXPLAIN json for each (with the attached_condition removed as it's huge). Note that 5.7 is using the path_alias__status key whereas 8.0 and MariaDB are using path_alias__path_langcode_id_status.

  • 🇬🇧United Kingdom catch

    It's because paths with no aliases are written to the same cache entry that is used to preload aliases...

    Just to clarify on this since no-one's worked on this logic for a long time, so it's good to horrify new people with it.

    This was originally added in https://www.drupal.org/project/drupal/issues/456824#comment-1596070 alongside #106559: drupal_lookup_path() optimization - skip looking up certain paths in drupal_lookup_path() . I think #2233623: Merge AliasManagerCacheDecorator into AliasManager was fixing a refactoring regression - i.e. restoring the previous behaviour. #2582219: Preload Cache in AliasManager can get huge was another regression due to refactoring. Pretty sure the actual caching logic hasn't changed intentionally since I worked on it 15 years ago.

    By adding paths with no alias to the preload cache, we run a single query to get aliases that are probably there, and to confirm that aliases that probably aren't there still aren't. If we didn't add them to the preload list, we'd have to individually query to find out whether there's a alias or not to get the same empty result. So it results in a lot of paths to add to the single condition, but this is to avoid dozens of individual queries for all those paths later in the request.

    If we cached aliases and the lack of aliases instead of just paths, we'd save the preload altogether because we'd already have the aliases and NULLs, but we'd have to invalidate this cache every time a path alias is written (potentially a lot), instead of the arbitrary 24 hours with no invalidation in path alias manager. We could try to target the invalidations with cache tags now, but the cache tags would have to include all the system paths that cache item represents in case any of them have an alias added, so it'd be moving the big lookup to the cache tags system rather than getting rid of it.

    Short version - caching the system paths with no alias saves a lot of individual lookups.

  • 🇦🇺Australia mstrelan

    Further to #53 if I modify the query to add USE INDEX (path_alias__path_langcode_id_status) after the FROM clause it reduces the query time from 3.028s to 0.027s. Dropping the path_alias__status index has the same effect. Is this worth exploring further?

  • 🇬🇧United Kingdom catch

    The good index was added (well, modified) in #3007669: Add publishing status to path aliases which also added the status column.

    The bad index was not explicitly added - I guess it comes from the base entity storage schema class, but we could unset() that and add an update to drop it.

  • 🇨🇭Switzerland Berdir Switzerland

    Yes, all fields that are also defined as a key automatically get an index as well, We should be able to unset that in \Drupal\path_alias\PathAliasStorageSchema::getEntitySchema() and then add an update function that does updateEntityType()

  • last update 11 months ago
    29,878 pass
  • 🇦🇺Australia mstrelan

    Do we want to address the db index in this issue or open a new issue for it and continue to optimise the query here? Either way, here is a patch for it. Need to write the tests still.

  • last update 11 months ago
    29,879 pass, 1 fail
  • last update 11 months ago
    29,878 pass, 2 fail
  • 🇦🇺Australia mstrelan

    Updated patch with tests and a test-only patch (which is also the interdiff).

  • 🇦🇺Australia acbramley

    Definitely feels like this should go in a separate issue, we already have an MR with code that's completely separate. It would be nice to get that reviewed too :)

  • 🇦🇺Australia mstrelan

    Opened 🐛 Remove suboptimal path_alias__status index from path_alias table Fixed for removing the index. Setting back to NR for the MR. Hiding patches.

  • Status changed to Needs work 11 months ago
  • 🇺🇸United States smustgrave

    Taking a look at MR 4402 think it will need a test case and CR for the new service.

  • 🇦🇺Australia acbramley

    Not really sure what a test would look like here, the only other issue I can find with tests that added a pgsql override is #2627512: Datetime Views plugins don't support timezones (this commit)

    However, this uses mocks for the db and just checks return values as the services just return strings. I'm not really sure how we'd test this one, existing tests around preloadAlias are all mocks as well.

    Created a CR here - not really sure what else should go in it https://www.drupal.org/node/3378345

  • 🇺🇸United States smustgrave

    Maybe see in #bugsmash if this is one of those scenarios where a test isn't needed?

  • 🇦🇺Australia mstrelan

    Should add a test for the case-insensitive matching? i.e. the reason we need a backend override in the first place? We could then run it against sqlite (and potentially other drivers) and see if they need the override as well.

  • 🇦🇺Australia acbramley

    Should add a test for the case-insensitive matching?

    Definitely! But imo that's out of scope of this issue. It should/could have been done when the conditions were changed originally. It's not clear to me if that happened because of how many times this code path has been refactored but it seems like it wasn't done since tests passed in #40 on pgsql and sqllite.

    The only place preloadPathAlias appears in tests is as a mocked method. Perhaps we should open a separate issue to expand test coverage for this entire service?

    @quietone pointed me to https://www.drupal.org/project/drupal/issues/2972776 🌱 [policy, no patch] Better scoping for bug fix test coverage RTBC which has this line:

    or ever-expanding the scope of a tiny issue to introduce better test coverage it was never the issue’s fault didn’t exist in the first place.

    IMO that applies here.

Production build 0.69.0 2024