Limites des pilotes
Limites connues et particularités par pilote. Ce qui fonctionne différemment d'un moteur à l'autre, avec les solutions de contournement.
QoreDB essaie d'exposer une interface cohérente sur tous les pilotes pris en charge, mais les moteurs sous-jacents sont différents. Cette page catalogue les limites pratiques et les particularités par pilote, afin que vous sachiez à quoi vous attendre et où se trouvent les solutions de contournement.
Cette liste reflète le comportement actuel. Les choses qui "devraient fonctionner" du point de vue de la liste des fonctionnalités, mais qui ont en réalité une mise en garde, sont répertoriées ici.
PostgreSQL
- Annulation (Cancellation) : une requête en cours est annulée en émettant
pg_cancel_backend(pid)sur une connexion distincte. Votre rôle nécessitepg_signal_backendou d'être le propriétaire de la requête annulée, sinon l'annulation échoue silencieusement. - Navigation inter-bases de données : chaque connexion a pour portée (scope) une seule base de données. Pour naviguer dans une autre base de données sur le même serveur, créez une connexion QoreDB distincte.
MySQL & MariaDB
- Annulation : implémentée via
KILL QUERY <id>, ce qui nécessite le privilègePROCESS(etSUPERpour les requêtes appartenant à d'autres utilisateurs). - Transactions dépendantes du moteur : le comportement transactionnel suppose InnoDB. Les tables sur MyISAM ou d'autres moteurs non transactionnels ne sont pas annulées (roll back) lors d'un
ROLLBACK; le pilote ne le détecte pas pour vous. - Schémas système masqués :
information_schema,mysql,performance_schemaetsysn'apparaissent pas dans l'arborescence du schéma par défaut. Interrogez-les directement si vous en avez besoin. - Plugins d'authentification : MySQL 8 utilise par défaut
caching_sha2_password. Les anciens clients peuvent échouer ; basculez l'utilisateur versmysql_native_passwordcôté serveur ou mettez à niveau.
SQL Server
- Le certificat du serveur est approuvé par défaut : avec le SSL activé, QoreDB appelle
trust_cert()sur la configuration Tiberius, qui accepte le certificat du serveur sans validation stricte de l'Autorité de Certification (CA). C'est parfait pour les services gérés avec des CA publiques, et pour les réseaux privés de confiance ; moins sûr sur l'internet public. - Instances nommées : QoreDB se connecte directement avec l'hôte et le port. Les instances nommées (
HOST\SQLEXPRESS) qui nécessitent le service SQL Server Browser pour la recherche de port ne sont pas prises en charge. Trouvez le port statique sur lequel votre instance nommée écoute et utilisez-le. - Modes d'authentification : authentification SQL, Windows NTLM et Windows Integré (SSPI). Les deux derniers nécessitent Windows.
SQLite
- Écrivain unique : SQLite sérialise les écritures. Les lectures sont simultanées ; une écriture bloque toutes les autres écritures jusqu'à la validation (commit). De longues transactions d'écriture peuvent affamer d'autres écrivains.
- Affinité de type, pas de types stricts : les colonnes
INTEGERstockent volontiers des chaînes (et vice versa) à moins que le modeSTRICTne soit utilisé. Si l'intégrité des types est importante, validez au niveau de la couche applicative ou utilisez des contraintesCHECK. - Pas de regex natif : l'opérateur
REGEXPnécessite une fonction définie par l'utilisateur personnalisée avant SQLite 3.45. UtilisezLIKEouGLOBpour une correspondance de modèles portable. - FTS5 : la recherche en texte intégral fonctionne, mais uniquement sur les tables virtuelles créées avec
CREATE VIRTUAL TABLE … USING fts5(…), pas sur les tables régulières.
MongoDB
- Les transactions nécessitent un replica set : les instances autonomes (standalone) de MongoDB ne prennent pas en charge les transactions multi-documents. Convertissez-les en un replica set à nœud unique pour le développement si vous en avez besoin.
- Opérateurs de pipeline bloqués par sécurité :
$function,$accumulatoret$wheresont rejetés avant l'envoi de la requête. Ils permettent l'exécution arbitraire de JavaScript côté serveur et sont bloqués par principe. Exécutez-les viamongoshdirectement si vous en avez vraiment besoin. - Profondeur du pipeline d'agrégation plafonnée à 50 étapes. Tout ce qui est plus profond est rejeté côté client.
- Index par défaut
_id_: ne peut pas être supprimé via l'interface de gestion des index. - Index TTL : uniquement à clé unique, ascendant ou descendant. Les index TTL composés ne sont pas pris en charge par Mongo lui-même.
$outet$merge: doivent être la dernière étape d'un pipeline (une contrainte propre à Mongo, affichée telle quelle).
Redis
- Écritures de mutation depuis l'interface utilisateur : la grille de données pour Redis est orientée vers la lecture. L'édition en ligne des clés et des valeurs n'est pas prise en charge dans l'interface utilisateur actuelle ; utilisez l'éditeur avec des commandes Redis brutes (
SET,HSET,LPUSH, etc.) à la place. SCANn'est pas atomique : l'itération des clés avecSCANpeut renvoyer des doublons ou manquer des clés nouvellement insérées. C'est le comportement propre à Redis, pas une limitation de QoreDB. Ne vous fiez pas aux snapshotsSCANpour des comptes exacts.- Espaces de noms des bases de données : les bases de données Redis sont numérotées de 0 à 15 par défaut (configurable via le paramètre
databasesdu serveur). Seules les bases de données non vides sont répertoriées dans l'arborescence du schéma. - Pas de schéma :
describeTablerenvoie la forme spécifique au type (chaîne, hachage, liste, ensemble, ensemble trié, flux) plutôt que les métadonnées des colonnes. - Mode Cluster : non détecté comme un concept distinct ; le pilote se connecte à un nœud. Pour un cluster Redis, pointez vers le nœud d'entrée et laissez le pilote suivre les redirections.
- Scripting Lua :
EVAL,EVALSHA,FCALLsont classés comme des mutations.SCRIPT LOADfonctionne ;SCRIPT FLUSH,SCRIPT KILL,SLEEP,FLUSHALL,FLUSHDB,SHUTDOWN,CONFIGdéclenchent des avertissements de requête dangereuse. - Annulation : fait de son mieux. Les commandes bloquantes de longue durée peuvent ne pas répondre immédiatement à l'annulation.
DuckDB
- Extensions de fichiers : seules
.duckdbet.dbsont acceptées par le validateur de chemin. Renommez les fichiers avec d'autres extensions avant de vous connecter. - Mode en mémoire :
:memory:etduckdb::memory:fonctionnent tous les deux. Les données sont perdues à la fermeture de la connexion. - API synchrone sur un environnement asynchrone : les requêtes lourdes peuvent bloquer brièvement la boucle d'événements. Le pilote enveloppe l'exécution avec
spawn_blockingpour garder l'interface utilisateur réactive.
CockroachDB
- Pas de vues matérialisées : CockroachDB ne prend intentionnellement pas en charge
MATERIALIZED VIEW. L'arborescence du schéma omet la section. - La maintenance se limite à
ANALYZE: les commandes de maintenance typiques de Postgres (VACUUM,REINDEX, etc.) sont ignorées ou non prises en charge. CockroachDB les gère automatiquement. - Catalogues système filtrés :
crdb_internaletpg_extensionsont masqués dans l'arborescence du schéma. - Base de données par défaut :
defaultdb, paspostgres. - Nouvelles tentatives de transaction : CockroachDB demande au client de réessayer les transactions lors de conflits de sérialisation plus agressivement que Postgres. Depuis l'éditeur, relancez simplement l'instruction qui a échoué.
- Port par défaut :
26257, pas5432. Facile à oublier.
ClickHouse
- Transport HTTP / HTTPS : le pilote se connecte via
8123/8443. Le TCP natif (9000) n'est pas pris en charge en v1. - Commandes dangereuses refusées :
OPTIMIZE … FINAL,KILL QUERYet toutes les opérationsSYSTEM …sont rejetées par le classifieur de sûreté. Passez parclickhouse-clientpour ces commandes. - Annulation best-effort :
KILL QUERY WHERE query_id = …marque la requête à annuler ; ClickHouse stoppe le fragment courant à la prochaine vérification. - Éditeur DDL Alter limité à la famille MergeTree : les altérations de tables distribuées et
ON CLUSTERne sont pas exposées dans l'éditeur visuel en v1. Écrivez-les dans l'éditeur SQL. - Sauvegardes non couvertes par les helpers : les helpers de backup intégrés ne pilotent pas ClickHouse en v0.1.31. Utilisez l'instruction native
BACKUP TO …ou l'outillage de snapshot de votre cluster. - Types inconnus rétrogradés en texte : les types rares ou exotiques hors du mapping des 28 types s'affichent en texte plutôt que de faire échouer le résultat.
Elasticsearch & OpenSearch
- Transport HTTP / HTTPS : les deux pilotes se connectent via
9200(ou le point d'accès managé). Il n'y a pas de protocole binaire natif. - Deux surfaces de requête : l'éditeur de recherche (Query DSL) et le mode SQL couvrent des besoins différents. Le mode SQL est contraint par l'API SQL du moteur lui-même — les jointures, certaines fonctions et le DDL n'y sont pas disponibles ; utilisez l'éditeur de recherche pour tout ce que la couche SQL ne sait pas exprimer.
- Des index, pas des tables : l'explorateur de schéma liste les index et leurs mappings. Le mapping dynamique fait qu'un champ peut apparaître dans certains documents et pas d'autres ; le mapping reflète ce que le moteur connaît, pas un schéma strict.
- Écritures et administration via le filet de sécurité : la création/suppression d'index, les écritures de documents,
_reindexet les appels aux paramètres du cluster passent par le mode lecture seule et les garde-fous d'environnement, comme tous les autres moteurs. - AWS OpenSearch Service : les domaines qui exigent la signature de requêtes SigV4 plutôt que la basic auth ou des jetons peuvent nécessiter un proxy ; utilisez l'un des modes d'authentification pris en charge pour les connexions directes.
Fournisseurs compatibles Postgres
Supabase
Se connecte via le standard postgresql://. Deux chaînes de connexion sont généralement proposées :
- Connexion directe : prise en charge complète des fonctionnalités, mais nombre de connexions limité.
- Groupée (PgBouncer) : s'adapte à un plus grand nombre de clients, mais en mode pool de transactions, les instructions préparées et
LISTEN/NOTIFYne sont pas pris en charge. Pour l'utilisation interactive de QoreDB, la chaîne directe est généralement le bon choix.
Neon
postgresql:// standard. Les points de terminaison peuvent se mettre en veille (scale to zero), donc la première requête après un démarrage à froid prend un peu plus de temps que d'habitude.
TimescaleDB
Même pilote que Postgres. Les hypertables et les agrégats continus apparaissent comme des tables et des vues régulières dans l'arborescence du schéma ; les requêtes fonctionnent comme du SQL standard.
Où aller ensuite
- Connexions pour les pages de configuration par pilote
- URL de connexion pour les formats DSN
- Interrogation : éditeur et autocomplétion pour les particularités de l'éditeur qui s'adaptent selon le pilote
Restez informé des nouveautés
Rejoignez notre newsletter pour recevoir les mises à jour majeures, les nouveaux drivers et nos coulisses techniques.