Comments on Le SQL c'est rigolo

SB (2015-03-18T17:37:34Z)

« le SQL est, au niveau syntaxique, un langage invraisemblablement pourri. »

Une tentative de langage naturel, comme le Cobol ?

Ruxor (2014-11-05T15:29:03Z)

@Z: Effectivement.

Z (2014-11-05T14:28:32Z)

Et le titre le plus long : "De la force de Coq et d'autres systèmes, et de l'utilité de mettre les résultats mathématiques en contexte"

Ruxor (2014-11-03T20:57:47Z)

@ScanX: Merci, c'est intéressant. Il m'arrive d'ailleurs de faire des EXPLAIN sur des requêtes SQL pour savoir comment il va s'y prendre. Ceci dit, parfois j'aime bien aussi ne pas savoir comment les choses marchent, parce que quand je regarde trop dans les entrailles d'un programme, j'ai tendance à y découvrir plein de problèmes qui m'inquiètent…

ScanX (2014-11-03T20:15:57Z)

Salut Ruxor,

Dans le même genre j'ai trouvé cet article sur la décomposition d'une requête SQL dans PostgreSQL:
<URL: http://patshaughnessy.net/2014/10/13/following-a-select-statement-through-postgres-internals >

Camille (2014-10-25T10:18:18Z)

Si tu as le temps à l'occasion de nous montrer la distribution empirique du nombre de commentaires d'un article…

Ruxor (2014-10-23T11:20:31Z)

@régis: C'est une base de données différentes, mais je peux répondre aussi : l'entrée ayant le plus grand nombre de commentaires approuvés (ou de commentaires tout court) est <URL: http://www.madore.org/~david/weblog/d.2008-01-23.1520.html#d.2008-01-23.1520 >, avec 81 approuvés. Elle est aussi l'entrée ayant le plus gros volume total de commentaires (environ 116ko).

régis (2014-10-23T08:51:57Z)

Et l'entrée la plus commentée?

Ruxor (2014-10-22T18:27:32Z)

@Fred le marin: Le polynôme dont tu parles n'a jamais d'intérêt pratique. Sa propriété est que les valeurs *positives* prises par ce polynôme sont exactement les nombres premiers : mais l'arnaque est que ce polynôme ne prend presque aucune valeur positive ; essentiellement, il n'en prend que quand on lui fournit des entrées très particulières qui « codent » un calcul complet conduisant à un nombre premier, et c'est très rare. En tout cas, il ne peut pas servir à fabriquer des nombres premiers. Pour le polynôme explicite qu'on connaît (Jones, Sato, Wada & Wiens) ça doit être très difficile de lui faire sortir une valeur plus grande que 2 ou 3… Voir aussi <URL: http://mathoverflow.net/questions/132954/the-jones-sato-wada-wiens-polynomial-for-prime-numbers-and-differential-calculus >.

Fred le marin (2014-10-21T18:40:50Z)

Une simple requête !

Rien à voir avec le SQL, mais tu parles de polynômes (symétriques en l'occurrence).
Or, sachant qu'il existe un polynôme (de plusieurs variables : 26?) qui balaye tous les nombres premiers, peut-on l'utiliser pour former de très grands nombres premiers ?
Sachant que le plus grand premier connu est de la forme 2^m-1, cela me perturbe que mon assertion d'avant soit fausse (et je suis aveugle sur ce point, n'étant pas expert en cryptographie, mais la réponse doit être facile).
Sinon, les versions de SQL se sont bonifiées avec le temps, et je me souviens de l'époque où je faisais un peu de C/Pro*C (sigh)…

Ruxor (2014-10-21T18:19:22Z)

@Name: Non, parce que j'ai compté la longueur du source complet, et l'entrée que tu lies a un beau « style="text-align: center; font-family: Helvetica, &quot;Nimbus Sans L&quot;;, Arial, sans-serif; font-size: 144pt; font-weight: bold; color: rgb(255,0,0)" » qui la rallonge.

Name (2014-10-21T17:21:23Z)

@Ruxor : euh, ça ne serait pas plutôt celle-là ? <URL: http://www.madore.org/~david/weblog/d.2005-05-30.1000.html#d.2005-05-30.1000> ? Pas en "hauteur", certes, mais en nombre de caractères. A moins que la réponse à Hélène ne fût humoristique…

Ruxor (2014-10-21T10:42:19Z)

@Bubu: Ah, OK, j'avais mal compris comment .//text() fonctionne. Mais le problème avec la solution de remplacement, outre le bug de PostgreSQL, c'est que j'imagine que c'est atrocement lent parce qu'il doit recréer une copie de tous les sous-arbres de l'arbre XML, ce qui fait quand même beaucoup de choses, juste pour en extraire le nom de la balise racine, ce qui est quand même franchement absurde. :-(

Bubu (2014-10-21T01:04:33Z)

.//name() n'est pas une expression valide en XPath 1.0. En XPath 1.0, ce qui suit un "/" est nécessairement une étape de la forme axe::test-nœud[prédicat1]…[prédicatn], l'axe et les prédicats étant optionnels. test-nœud peut filtrer des nœuds par leur type et leur nom, mais pas faire de calcul dessus. En fait, XPath 1.0 n'a pas d'autre type atomique que « ensemble de nœuds », et n'est donc pas capable de représenter ou manipuler des ensembles ou séquences de chaînes de caractères. XPath 2.0 change complètement la syntaxe et la sémantique du langage, et .//name() est une expression XPath 2.0 valide qui fait ce que tu attends. Mais XPath 2.0 est très peu supporté.

Pour faire ce que tu veux, il faut faire en PostgreSQL/XPath:

SELECT xpath('name()',xml) FROM (SELECT unnest(xpath('.//*', '<foo><bar/><bleuargh/></foo>'::xml)) AS xml) AS t;

… sauf que là, tu vas tomber sur un vrai bug de PostgreSQL 9.1, qui fait que les expressions XPath devant renvoyer des scalaires renvoient des chaînes de caractères vides, bug corrigé dans PostgreSQL 9.2 (chercher « scalar value » sur <URL: http://www.postgresql.org/docs/9.2/static/release-9-2.html >).

Un hack crade qui devrait marcher dans PostgreSQL 9.1:
SELECT substring(CAST(xml as text) from '<\\s*([^\\s/>]*)') FROM (SELECT unnest(xpath('.//*', '<foo><bar/><bleuargh/></foo>'::xml)) AS xml) AS t;

Ruxor (2014-10-20T20:59:33Z)

@Hélène: <URL: http://www.madore.org/~david/weblog/d.2003-12-06.0385.html#d.2003-12-06.0385 >, mais ce n'est franchement pas très intéressant.

Hélène (2014-10-20T19:35:02Z)

Et l'entrée la plus courte ?


You can post a comment using the following fields:
Name or nick (mandatory):
Web site URL (optional):
Email address (optional, will not appear):
Identifier phrase (optional, see below):
Attempt to remember the values above?
The comment itself (mandatory):

Optional message for moderator (hidden to others):

Spam protection: please enter below the following signs in reverse order: f551a5


Recent comments