merge
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 15 Oct 2009 20:20:29 +0200
changeset 480 4025f1f02d1d
parent 479 ea94772baa77 (current diff)
parent 478 ed73e03b966c (diff)
child 481 b19683747d74
child 482 f4c0c6f9b202
child 494 053c5b72a892
child 605 c61aa24c85e7
child 619 62ad98cc1e64
child 621 549ca221e30e
merge
--- a/README	Thu Oct 15 20:20:16 2009 +0200
+++ b/README	Thu Oct 15 20:20:29 2009 +0200
@@ -2,4 +2,11 @@
 
 INSTALL
 -------
+
+the standard way:
+
 python setup.py install
+
+building rql binary extension in place:
+
+python setup.py build_ext --inplace
--- a/doc/specifications_en.txt	Thu Oct 15 20:20:16 2009 +0200
+++ b/doc/specifications_en.txt	Thu Oct 15 20:20:29 2009 +0200
@@ -1,6 +1,6 @@
 .. -*- coding: utf-8 -*-
 
-	
+
 ===================================================
 Specification "Relations Query Language" (Hercules)
 ===================================================
@@ -17,7 +17,7 @@
 language not to see virtually no difference between an attribute and a
 relation).
 
-RQL is inspired by SQL but is the highest level. A knowledge of the 
+RQL is inspired by SQL but is the highest level. A knowledge of the
 `CubicWeb` schema defining the application is necessary.
 
 Comparison with existing languages
@@ -27,8 +27,8 @@
 ```
 RQL builds on the features of SQL but is at a higher level
 (the current implementation of RQL generates SQL). For that it is limited
-to the way of browsing relations and introduces variables. 
-The user does not need to know the model underlying SQL, but the `CubicWeb` 
+to the way of browsing relations and introduces variables.
+The user does not need to know the model underlying SQL, but the `CubicWeb`
 scheam defining the application.
 
 Versa
@@ -36,10 +36,10 @@
 Should I look in more detail, but here is already some ideas for
 the moment ... Versa_ is the language most similar to what we wanted
 to do, but the model underlying data being RDF, there is some
-number of things such as namespaces or handling of the RDF types which 
+number of things such as namespaces or handling of the RDF types which
 does not interest us. On the functionality level, Versa_ is very comprehensive
 including through many functions of conversion and basic types manipulation,
-which may need to be guided at one time or another. 
+which may need to be guided at one time or another.
 Finally, the syntax is a little esoteric.
 
 See also
@@ -156,7 +156,7 @@
 
 The restriction can define variables used in assignments.
 
-Caution, if a restriction is specified, the insertion is done for 
+Caution, if a restriction is specified, the insertion is done for
 *each line results returned by the restriction*.
 
 - *Insert a new person named 'foo'*
@@ -170,7 +170,7 @@
 
         INSERT Person X, Person Y: X name 'foo', Y name 'nice', X friend Y
 
-- *Insert a new person named 'foo' and a 'friend' relation with an existing 
+- *Insert a new person named 'foo' and a 'friend' relation with an existing
   person called 'nice'*
   ::
 
@@ -189,7 +189,7 @@
 
         SET X name 'bar', X first_name 'original' where X is Person X name 'foo'
 
-- *Insert a relation of type 'know' between objects linked by 
+- *Insert a relation of type 'know' between objects linked by
   the relation of type 'friend'*
   ::
 
@@ -227,7 +227,7 @@
 
      DISTINCT, INSERT, SET, DELETE,
      WHERE, AND, OR, NOT
-     IN, LIKE,
+     IN, LIKE, ILIKE,
      TRUE, FALSE, NULL, TODAY, NOW
      GROUPBY, ORDERBY, ASC, DESC
 
@@ -289,21 +289,23 @@
 ````````````````````
 ::
 
-     =, <, <=, >=, > = ~, IN, LIKE
+     =, <, <=, >=, > = ~, IN, LIKE, ILIKE
 
 * The operator `=` is the default operator.
 
 * The operator `LIKE` equivalent to `~=` can be used with the
-  special character `%` in a string to indicate that the chain 
+  special character `%` in a string to indicate that the chain
   must start or finish by a prefix/suffix:
   ::
 
      Any X WHERE X name =~ 'Th%'
      Any X WHERE X name LIKE '%lt'
 
+* The operator `ILIKE` is a case-insensitive version of `LIKE`.
+
 * The operator `IN` provides a list of possible values:
   ::
-  
+
     Any X WHERE X name IN ( 'chauvat', 'fayolle', 'di mascio', 'thenault')
 
 
@@ -410,7 +412,7 @@
 
      relation    ::= 'NOT'? VARIABLE R_TYPE COMP_OP? expression
                    | 'NOT'? R_TYPE VARIABLE 'IN' '(' expression (',' expression)* ')'
-                   
+
      expression  ::= var_or_func_or_const (MATH_OP var_or_func_or_const) *
                    | '(' expression ')'
 
@@ -423,7 +425,7 @@
      # tokens
      LOGIC_OP ::= ',' | 'GOLD' | 'AND'
      MATH_OP  ::= '+' | '-' | '/' | '*'
-     COMP_OP  ::= '>' | '>=' | '=' | '<=' | '<' | '~=' | 'LIKE'
+     COMP_OP  ::= '>' | '>=' | '=' | '<=' | '<' | '~=' | 'LIKE' | 'ILIKE'
 
      FUNCTION ::= 'MIN' | 'MAX' | 'SUM' | 'AVG' | 'COUNT' | 'upper' | 'LOWER'
 
@@ -464,7 +466,7 @@
 Identity
 ````````
 
-You can use the special relation `identity` in a query to 
+You can use the special relation `identity` in a query to
 add an identity constraint between two variables. This is equivalent
 to ``is`` in python::
 
@@ -480,7 +482,7 @@
 Internal representation (syntactic tree)
 ----------------------------------------
 
-The tree research does not contain the selected variables 
+The tree research does not contain the selected variables
 (e.g. there is only what follows "WHERE").
 
 The insertion tree does not contain the variables inserted or relations
@@ -523,10 +525,10 @@
 -------
 
 - The current implementation does not support linking two relations of type
-  'is' with a OR. I do not think that the negation is  supported on this type 
+  'is' with a OR. I do not think that the negation is  supported on this type
   of relation (XXX FIXME to be confirmed).
 
-- Relations defining the variables must be left to those using them. 
+- Relations defining the variables must be left to those using them.
   For example::
 
      Point P where P abs X, P ord Y, P value X+Y
@@ -567,7 +569,7 @@
 
      Document class Type <-> Document occurence_of Fiche class Type
      Sheet class Type    <-> Form collection Collection class Type
-    
+
 Therefore 1. becomes::
 
      Document X where
--- a/doc/specifications_fr.txt	Thu Oct 15 20:20:16 2009 +0200
+++ b/doc/specifications_fr.txt	Thu Oct 15 20:20:29 2009 +0200
@@ -224,13 +224,13 @@
 
 Mots clés réservés
 ------------------
-Les mots clés ne sont pas sensibles à la casse. 
+Les mots clés ne sont pas sensibles à la casse.
 
 ::
 
     DISTINCT, INSERT, SET, DELETE,
     WHERE, AND, OR, NOT
-    IN, LIKE,
+    IN, LIKE, ILIKE,
     TRUE, FALSE, NULL, TODAY, NOW
     GROUPBY, ORDERBY, ASC, DESC
 
@@ -292,17 +292,20 @@
 `````````````````````````
 ::
 
-    =, <, <=, >=, >, ~=, IN, LIKE
+    =, <, <=, >=, >, ~=, IN, LIKE, ILIKE
 
 * L'opérateur `=` est l'opérateur par défaut.
 
-* L'opérateur `LIKE` équivalent à `~=` permet d'utiliser le caractère `%` dans 
-  une chaine de caractère pour indiquer que la chaîne doit commencer ou terminer 
+* L'opérateur `LIKE` équivalent à `~=` permet d'utiliser le caractère `%` dans
+  une chaine de caractère pour indiquer que la chaîne doit commencer ou terminer
   par un préfix/suffixe::
-    
+
     Any X WHERE X nom ~= 'Th%'
     Any X WHERE X nom LIKE '%lt'
 
+* L'opérateur `ILIKE` est une version de `LIKE` qui n'est pas sensible à la
+  casse.
+
 * L'opérateur `IN` permet de donner une liste de valeurs possibles::
 
     Any X WHERE X nom IN ('chauvat', 'fayolle', 'di mascio', 'thenault')