Reference picker sur relation (V4 responsive)

Hello,

J’essaie d’uiliser la nouvelle feature (Foreign-key field rendering to choose a reference picker) de la P13 : https://www.simplicite.io/resources/4.0/releasenote/releasenote-patchlevel-13.md mais je n’y arrive pas. Est ce qu’il y a un paramétrage à faire sur les champs ramenés par la relation?

Par ailleurs, sur l’instance de démo renault dev j’essaie de produire le fonctionnement sur le module demo sur l’objet Order mais rien ne se passe (pas de filtre dynamique qui me permet de selectionner les client à partir des caractères saisis). Du coup, je ne sais pas si c’est un bug ou un manque de paramétrage de mon côté.

Merci pour votre aide.

Zouhair

Sur l’instance “renault” la démo n’est sans doute pas à jour. Je vais la mettre à jour.

Bon même après avoir mis à jour la demo sur cette instance la popup de completion de selection ne s’affiche pas:

La seule différence que je vois comme ça en 1ère analyse par rapport à d’autres instances sur lesquelles ça marche c’est qu’on est sur MariaDB (MySQL) sur cette instance vs HSQLDB sur une instance où ça marche:

Or la completion de sélection tape dans la table d’index qui ne se comporte pas de la même manière d’une base de données à l’autre… @Francois tu pourrais jeter un coup d’oeil (instance https://renault.dev.simplicite.io) ? Merci

EDIT: j’ai reconstruit l’index sur l’instance renault et ça ne change rien

Il suffit d’ouvrir les log et voir qu’il y a un pb avec la base MySQL 5.5

Error SQL query: SELECT idx_key, idx_object, idx_row_id, idx_ukey, idx_all, MATCH (idx_ukey, idx_all) AGAINST (‘bi’ IN BOOLEAN MODE) AS score FROM m_index WHERE MATCH (idx_ukey, idx_all) AGAINST (‘bi’ IN BOOLEAN MODE) AND idx_object in (‘DemoSupplier’) ORDER BY score desc LIMIT 0,50

Error: The used table type doesn’t support FULLTEXT indexes

L’index fulltext n’a pas été créé ou n’est pas supporté par votre environnement.

De mémoire, il faut un table MyIsam et pas InnoDB

-- ZZZ Fulltext index => MyIsam table
CREATE TABLE m_index (
  idx_key    varchar(100) NOT NULL,
  idx_object varchar(50),
  idx_row_id int(11),
  idx_ukey   varchar(255),
  idx_all    longtext,
  FULLTEXT (idx_ukey,idx_all),
  PRIMARY KEY (idx_key)
) ENGINE=MyIsam;

J’ai converti la table d’index en MyISAM et créé l’index fulltext (et reconstruit l’indexation niveau plateforme) mais pour le moment ça ne résout pas le pb: la requête de match ne renvoie plus d’erreur mais ne renvoie aucun record… on continue nos investigations…

NB: Sur le serveur de l’instance renault on est en MariaDB 5.5 (pas en MySQL 5.5).

Bon après investigation il y a une subtilité qui nous échappe sur les recherches fulltext sur MariaDB 5.5…

En attendant d’élucider le mystère, on a rendu le mode de recherche fulltext inhibable via le paramètre système USE_FULLTEXT_INDEXES (valeur par défaut yes) , en le forçant à no ça marche:

Le patch pour le créer à no:

<object>
	<name>SystemParam</name>
	<action>upsert</action>
	<data>
		<sys_code>USE_FULLTEXT_INDEXES</sys_code>
		<sys_value><![CDATA[no]]></sys_value>
		<sys_type>PRV</sys_type>
		<sys_desc><![CDATA[Use fulltext indexes for object and document index searches]]></sys_desc>
		<row_module_id.mdl_name>System</row_module_id.mdl_name>
	</data>
</object>

La modif a été poussée sur la 4.0.P17 qui devrait être releasée ce soir.

A mon sens c’est un contournement non pérenne qui signifie que la recherche sera un like "%...%" et non une recherche indexée (on revient comme sur hsqldb = base de dev sans trop de données).

=> En production si vous avez une table de plusieurs millions de lignes, avec ce paramètre ça fera désormais un gentil full-scan de la table donc des perf execrables…

bref je déconseille vivement d’indexer de tels champs et préférer un lookup classique paginés dans le cas de grosses tables.