nbuytaert1 / apex-select2

Select lists in Oracle APEX as they should be
https://apex.oracle.com/pls/apex/f?p=64237:20
GNU General Public License v2.0
56 stars 19 forks source link

Search for some words does not work #111

Open jekeam opened 5 years ago

jekeam commented 5 years ago

I can not understand what was happening, I tried different settings, but searching for certain words does not work, what could be the problem? Example (Containse & ignore Case): Снимок

Not found, but the string exists if you enter another word: Снимок2

nbuytaert1 commented 5 years ago

That's odd. Is it possible to reproduce this behavior on apex.oracle.com and share developer credentials for your workspace?

jekeam commented 5 years ago

I don't quite understand how these options work inside, you can explain their behavior in more detail: Contains & Ignore Case Contains & Ignore Case, with Diacritics Contains & Case Sensitive Exact & Ignore Case Exact & Case Sensitive Starts With & Ignore Case Starts With & Case Sensitive Multi-word Search

Demo: https://apex.oracle.com/pls/apex/f?p=128665:2:::::: cred.: suineg/suineg@inbox.ru/12345678

new example: 456 456546546

I suspect that the problem is caused by a large number of lines in the directory, since I could not reproduce the error in a smaller directory.

45546

jekeam commented 5 years ago

The problem will disappear if you add a condition: where name like 'VBNKRUM1VGD%' Does this really mean the number of lines?

nbuytaert1 commented 5 years ago

The Search Logic setting determines how the entered search term is matched with the display column in your LOV.

The problem here is indeed the large amount of results being returned to the client. When I run the page in debug mode, I notice the following error:

PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "APEX_190100.WWV_FLOW_DYNAMIC_EXEC", line 1500 ORA-06512: at "APEX_190100.WWV_FLOW_DYNAMIC_EXEC", line 2501 ORA-06512: at line 761 ORA-06512: at line 793 ORA-06512: at "SYS.DBMS_SYS_SQL", line 2120 ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190100", line 599 ORA-06512: at "APEX_190100.WWV_FLOW_DYNAMIC_EXEC", line 2486 ORA-06512: at "APEX_190100.WWV_FLOW_DYNAMIC_EXEC", line 1476

This happens when the plugin code tries to build the JSON response body. This response includes the matched rows after querying the LOV.

I was unable to find a solution for this problem, but there's a workaround. Simply fill in a number for the Lazy-append Row Count setting on your Select2 page item (for example: 10). That will limit the amount of rows being returned to the client, and thus avoiding the above error.

jekeam commented 5 years ago

Yes, it helped, thanks. I did not get the idea to enable debugging, even ashamed) As for the parameters, I understood. But I did not understand how each of them works in more detail, you can describe in more detail or send ref on doc.?

nbuytaert1 commented 5 years ago

Contains & Ignore Case = case insensitive regular search Contains & Ignore Case, with Diacritics = case insensitive regular search, not taking into account special characters (for example: searching for "aero" will return "Aeróbics") Contains & Case Sensitive = case sensitive regular search Exact & Ignore Case = the search term must match the search option completely (case insensitive) Exact & Case Sensitive = the search term must match the search option completely (case sensitive) Starts With & Ignore Case = like 'search term%' (case insensitive) Starts With & Case Sensitive = like 'search term%' (case sensitive) Multi-word Search = see https://stackoverflow.com/questions/54763047/search-for-multiple-words-in-an-option-in-select2