Parcourir la source

add COLLATE NOCASE to table schema so that lookups will be case insensitive

git-svn-id: svn://bind10.isc.org/svn/bind10/trunk@1156 e5f2f494-b856-4b98-b285-d166d9295462
Evan Hunt il y a 15 ans
Parent
commit
599d1d9b64
2 fichiers modifiés avec 33 ajouts et 26 suppressions
  1. 19 19
      src/lib/auth/data_source_sqlite3.cc
  2. 14 7
      src/lib/python/isc/auth/sqlite3_ds.py

+ 19 - 19
src/lib/auth/data_source_sqlite3.cc

@@ -415,30 +415,30 @@ Sqlite3DataSrc::checkAndSetupSchema(void) {
                           "version INTEGER NOT NULL)");
         execSetupQuery("INSERT INTO schema_version VALUES (1)");
         execSetupQuery("CREATE TABLE zones ("
-                          "id INTEGER PRIMARY KEY, "
-                          "name STRING NOT NULL, "
-                          "rdclass STRING NOT NULL DEFAULT 'IN', "
-                          "dnssec BOOLEAN NOT NULL DEFAULT 0)");
+                         "id INTEGER PRIMARY KEY, "
+                         "name STRING NOT NULL COLLATE NOCASE, "
+                         "rdclass STRING NOT NULL COLLATE NOCASE DEFAULT 'IN', "
+                         "dnssec BOOLEAN NOT NULL DEFAULT 0)");
         execSetupQuery("CREATE INDEX zones_byname ON zones (name)");
         execSetupQuery("CREATE TABLE records ("
-                          "id INTEGER PRIMARY KEY, "
-                          "zone_id INTEGER NOT NULL, "
-                          "name STRING NOT NULL, "
-                          "rname STRING NOT NULL, "
-                          "ttl INTEGER NOT NULL, "
-                          "rdtype STRING NOT NULL, "
-                          "sigtype STRING, "
-                          "rdata STRING NOT NULL)");
+                         "id INTEGER PRIMARY KEY, "
+                         "zone_id INTEGER NOT NULL, "
+                         "name STRING NOT NULL COLLATE NOCASE, "
+                         "rname STRING NOT NULL COLLATE NOCASE, "
+                         "ttl INTEGER NOT NULL, "
+                         "rdtype STRING NOT NULL COLLATE NOCASE, "
+                         "sigtype STRING COLLATE NOCASE, "
+                         "rdata STRING NOT NULL)");
         execSetupQuery("CREATE INDEX records_byname ON records (name)");
         execSetupQuery("CREATE INDEX records_byrname ON records (rname)");
         execSetupQuery("CREATE TABLE nsec3 ("
-                          "id INTEGER PRIMARY KEY, "
-                          "zone_id INTEGER NOT NULL, "
-                          "hash STRING NOT NULL, "
-                          "owner STRING NOT NULL, "
-                          "ttl INTEGER NOT NULL, "
-                          "rdtype STRING NOT NULL, "
-                          "rdata STRING NOT NULL)");
+                         "id INTEGER PRIMARY KEY, "
+                         "zone_id INTEGER NOT NULL, "
+                         "hash STRING NOT NULL COLLATE NOCASE, "
+                         "owner STRING NOT NULL COLLATE NOCASE, "
+                         "ttl INTEGER NOT NULL, "
+                         "rdtype STRING NOT NULL COLLATE NOCASE, "
+                         "rdata STRING NOT NULL)");
         execSetupQuery("CREATE INDEX nsec3_byhash ON nsec3 (hash)");
 
         setupPreparedStatements();

+ 14 - 7
src/lib/python/isc/auth/sqlite3_ds.py

@@ -30,20 +30,27 @@ def create(cur):
     cur.execute("CREATE TABLE schema_version (version INTEGER NOT NULL)")
     cur.execute("INSERT INTO schema_version VALUES (1)")
     cur.execute("""CREATE TABLE zones (id INTEGER PRIMARY KEY, 
-                   name STRING NOT NULL, rdclass STRING NOT NULL DEFAULT 'IN', 
+                   name STRING NOT NULL COLLATE NOCASE,
+                   rdclass STRING NOT NULL COLLATE NOCASE DEFAULT 'IN', 
                    dnssec BOOLEAN NOT NULL DEFAULT 0)""")
     cur.execute("CREATE INDEX zones_byname ON zones (name)")
     cur.execute("""CREATE TABLE records (id INTEGER PRIMARY KEY, 
-                   zone_id INTEGER NOT NULL, name STRING NOT NULL,
-                   rname STRING NOT NULL, ttl INTEGER NOT NULL,
-                   rdtype STRING NOT NULL, sigtype STRING,
+                   zone_id INTEGER NOT NULL,
+                   name STRING NOT NULL COLLATE NOCASE,
+                   rname STRING NOT NULL COLLATE NOCASE,
+                   ttl INTEGER NOT NULL,
+                   rdtype STRING NOT NULL COLLATE NOCASE,
+                   sigtype STRING COLLATE NOCASE,
                    rdata STRING NOT NULL)""")
     cur.execute("CREATE INDEX records_byname ON records (name)")
     cur.execute("CREATE INDEX records_byrname ON records (rname)")
     cur.execute("""CREATE TABLE nsec3 (id INTEGER PRIMARY KEY, 
-                   zone_id INTEGER NOT NULL, hash STRING NOT NULL,
-                   owner STRING NOT NULL, ttl INTEGER NOT NULL,
-                   rdtype STRING NOT NULL, rdata STRING NOT NULL)""")
+                   zone_id INTEGER NOT NULL,
+                   hash STRING NOT NULL COLLATE NOCASE,
+                   owner STRING NOT NULL COLLATE NOCASE,
+                   ttl INTEGER NOT NULL,
+                   rdtype STRING NOT NULL COLLATE NOCASE,
+                   rdata STRING NOT NULL)""")
     cur.execute("CREATE INDEX nsec3_byhash ON nsec3 (hash)")
 
 #########################################################################