Página 1 de 1
Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 27 Dic 2020, 23:24
por picaron
Creo que existe un problema con la opción "Sus Mensajes " search.php?search_id=egosearch
El recuento de los mensajes marca 0 o un numero erróneo de mensajes, aun asi, todos los mensajes aparecen listados en una sola pagina.

El error se reproduce en mi foro y en este mismo foro también.
He echado un vistazo inicial para ver si localizaba el problema, pero no he podido atajar donde se encuentra.

Re: Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 28 Dic 2020, 01:33
por AlfredoRamos
Tal vez sea problema de la caché, o sea necesario resincronizar las estadísticas?

En mi foro (incluyendo el de pruebas) parece estar funcionando 
Re: Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 28 Dic 2020, 22:33
por ThE KuKa
Estadísticas sincronizadas y caché limpiado, pero nada.
Intento buscar info a ver si doy con algo.
Re: Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 29 Dic 2020, 14:05
por picaron
Con /search.php?author_id=
también falla....
search.php?author_id=2&sr=posts
Re: Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 01 Ene 2021, 20:35
por karbiko
En mi foro, estando con mi usuario y yendo a search.php?search_id=egosearchsale ésto:

Aunque luego, entrando en el enlace que aparece en mi perfil y que me lleva a search.php?author_id=53&sr=posts, me sale este otro resultado:

Hay una diferencia de casi 3700 mensajes más en el segundo enlace que en el primero
Re: Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 02 Ene 2021, 12:27
por ThE KuKa
canidev escribió:
Creo que he encontrado la causa, te comento.
Por alguna razón que no acabo de entender, phpBB usa un método de conteo distinto para mysqli que para el resto de motores.
Para mysqli usa "SQL_CALC_FOUND_ROWS" y "FOUND_ROWS()" en lugar de "COUNT()" que suele ser lo habitual.
Sacado de la documentación de MySQL:
The SQL_CALC_FOUND_ROWS query modifier and accompanying FOUND_ROWS() function are deprecated as of MySQL 8.0.17; expect them to be removed in a future version of MySQL. As a replacement, considering executing your query with LIMIT, and then a second query with COUNT(*)
En teoría en MariaDB debería funcionar pero se ve que no lo hace correctamente. Por la información que he podido encontrar, he visto que en algunas versiones de mysql esta función falla.
En el area51 lo he solucionado comentando dos líneas en /phpbb/search/fulltext_native.php. Linea 1196 y 1197 (de esa forma usa el mismo sistema de conteo para todos)
Esta solución es solo temporal, ya que ese mismo método es empleado en más lugares.
Así queda el archivo:
Código: Seleccionar todo
case 'mysqli':
// $select = 'SQL_CALC_FOUND_ROWS ' . $select;
// $is_mysql = true; canidev
//break; canidev
Re: Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 02 Ene 2021, 22:46
por picaron
Ahora si.... search.php?search_id=egosearch&sr=posts
Como siempre, FENOMENAL @canidev !!!!!
Gracias @ThE KuKa por aportar la solución.
Re: Posible BUG con "Sus Mensajes" en 3.3.2
Publicado: 03 Ene 2021, 12:41
por canidev
Esa solución funciona para la sección "Sus mensajes" pero he visto que si buscas una palabra en el buscador, el recuento de coincidencias sigue mal porque hay que anular eso en dos sitios.
La solución para solventarlo mientras phpBB no lo haga sería abrir el archivo /phpbb/search/fulltext_native.php y comentar o eliminar las siguientes líneas (todo, desde el "case" hasta el "break"):
- Alrededor de la línea 900:
Código: Seleccionar todo
case 'mysqli':
// 3.x does not support SQL_CALC_FOUND_ROWS
// $sql_array['SELECT'] = 'SQL_CALC_FOUND_ROWS ' . $sql_array['SELECT'];
$is_mysql = true;
break;
- Alrededor de la línea 1194:
Código: Seleccionar todo
case 'mysqli':
// $select = 'SQL_CALC_FOUND_ROWS ' . $select;
$is_mysql = true;
break;
Esto funcionará para los que tengáis puesto como motor de búsqueda el "phpBB Native Fulltext" ya que el "MySQL Fulltext" vuelve a usar "SQL_CALC_FOUND_ROWS" y ahí no es tan sencillo de cambiar.