RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   27-Apr-2012 03:39:08
  Branch: rpm-5_4                          Handle: 2012042701390800

  Modified files:           (Branch: rpm-5_4)
    rpm/tests/ref           rpmdb.sql sqldb-basic.out sqldb-basic.sql

  Log:
    - sqldb: enhance the schgmea, add inner joing and equi-join access
    examples.

  Summary:
    Revision    Changes     Path
    1.1.4.1     +48 -8      rpm/tests/ref/rpmdb.sql
    1.5.4.1     +102 -25    rpm/tests/ref/sqldb-basic.out
    1.4.4.1     +28 -4      rpm/tests/ref/sqldb-basic.sql
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/tests/ref/rpmdb.sql
  ============================================================================
  $ cvs diff -u -r1.1 -r1.1.4.1 rpmdb.sql
  --- rpm/tests/ref/rpmdb.sql   8 Apr 2010 22:01:52 -0000       1.1
  +++ rpm/tests/ref/rpmdb.sql   27 Apr 2012 01:39:08 -0000      1.1.4.1
  @@ -1,17 +1,57 @@
  +DROP TABLE IF EXISTS Packages;
   CREATE TABLE Packages (
  -  i  INTEGER UNIQUE PRIMARY KEY NOT NULL,
  -  h  BLOB NOT NULL
  +  v  INTEGER UNIQUE PRIMARY KEY NOT NULL,
  +  k  BLOB NOT NULL
   );
  -CREATE TEMP TRIGGER insert_Packages AFTER INSERT ON Packages
  +
  +CREATE TRIGGER insert_Packages AFTER INSERT ON Packages
     BEGIN
  -    INSERT INTO Nvra (k,v)   VALUES ( new.h, new.rowid );
  +    INSERT INTO Nvra (k,v)   VALUES (
  +     new.k, new.rowid );
  +    INSERT INTO Name (k,v)   VALUES (
  +     SUBSTR(new.k,  1, 4), new.rowid );
  +    INSERT INTO Version (k,v)        VALUES (
  +     SUBSTR(new.k,  6, 3), new.rowid );
  +    INSERT INTO Release (k,v)        VALUES (
  +     SUBSTR(new.k, 10, 1), new.rowid );
  +    INSERT INTO Arch (k,v)   VALUES (
  +     SUBSTR(new.k, 12), new.rowid );
     END;
  -CREATE TEMP TRIGGER delete_Packages BEFORE DELETE ON Packages
  +CREATE TRIGGER delete_Packages BEFORE DELETE ON Packages
     BEGIN
  -    DELETE FROM Nvra WHERE v = old.rowid;
  +    DELETE FROM Nvra WHERE v = old.rowid;
  +    DELETE FROM Name WHERE v = old.rowid;
  +    DELETE FROM Version      WHERE v = old.rowid;
  +    DELETE FROM Release      WHERE v = old.rowid;
  +    DELETE FROM Arch WHERE v = old.rowid;
     END;
   
  +DROP TABLE IF EXISTS Nvra;
   CREATE TABLE Nvra (
  -  k  TEXT PRIMARY KEY NOT NULL,
  -  v  INTEGER REFERENCES Packages(i) ON UPDATE RESTRICT ON DELETE RESTRICT
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
  +);
  +
  +DROP TABLE IF EXISTS Name;
  +CREATE TABLE Name (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
  +);
  +
  +DROP TABLE IF EXISTS Version;
  +CREATE TABLE Version (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
  +);
  +
  +DROP TABLE IF EXISTS Release;
  +CREATE TABLE Release (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
  +);
  +
  +DROP TABLE IF EXISTS Arch;
  +CREATE TABLE Arch (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
   );
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tests/ref/sqldb-basic.out
  ============================================================================
  $ cvs diff -u -r1.5 -r1.5.4.1 sqldb-basic.out
  --- rpm/tests/ref/sqldb-basic.out     12 Apr 2010 21:27:03 -0000      1.5
  +++ rpm/tests/ref/sqldb-basic.out     27 Apr 2012 01:39:08 -0000      1.5.4.1
  @@ -1,13 +1,3 @@
  --- Loading resources from /home/jbj/.sqliterc
  -.show
  -     echo: on
  -  explain: off
  -  headers: off
  -     mode: list
  -nullvalue: ""
  -   output: stdout
  -separator: "|"
  -    width: 
   .echo on
   .explain off
   .headers on
  @@ -29,24 +19,83 @@
       width: 
   .read ref/rpmdb.sql
   SELECT * from Packages;
  -i|h
  +v|k
   1|bing-1.2-3.noarch
   2|bang-4.5-6.noarch
  -3|boom-7.8.9.noarch
  +3|boom-7.8-9.noarch
   SELECT * from Nvra;
   k|v
   bing-1.2-3.noarch|1
   bang-4.5-6.noarch|2
  -boom-7.8.9.noarch|3
  +boom-7.8-9.noarch|3
  +SELECT * from Name;
  +k|v
  +bing|1
  +bang|2
  +boom|3
  +SELECT * from Version;
  +k|v
  +1.2|1
  +4.5|2
  +7.8|3
  +SELECT * from Release;
  +k|v
  +3|1
  +6|2
  +9|3
  +SELECT * from Arch;
  +k|v
  +noarch|1
  +noarch|2
  +noarch|3
  +SELECT Arch.k, Packages.k
  +  FROM Arch
  +  INNER JOIN Packages ON Arch.v = Packages.v;
  +k|k
  +noarch|bing-1.2-3.noarch
  +noarch|bang-4.5-6.noarch
  +noarch|boom-7.8-9.noarch
  +SELECT Arch.k, Packages.k
  +  FROM Arch, Packages
  +  WHERE Arch.v = Packages.v;
  +k|k
  +noarch|bing-1.2-3.noarch
  +noarch|bang-4.5-6.noarch
  +noarch|boom-7.8-9.noarch
  +SELECT *
  +  FROM Arch
  +  INNER JOIN Packages USING (v);
  +k|v|k
  +noarch|1|bing-1.2-3.noarch
  +noarch|2|bang-4.5-6.noarch
  +noarch|3|boom-7.8-9.noarch
   SELECT * from Packages;
  -i|h
  +v|k
   1|bing-1.2-3.noarch
  -3|boom-7.8.9.noarch
  +3|boom-7.8-9.noarch
   SELECT * from Nvra;
   k|v
   bing-1.2-3.noarch|1
  -boom-7.8.9.noarch|3
  +boom-7.8-9.noarch|3
  +SELECT * from Name;
  +k|v
  +bing|1
  +boom|3
  +SELECT * from Version;
  +k|v
  +1.2|1
  +7.8|3
  +SELECT * from Release;
  +k|v
  +3|1
  +9|3
  +SELECT * from Arch;
  +k|v
  +noarch|1
  +noarch|3
  +Error: disk I/O error
   .backup main tmp/main.bak
  +Error: disk I/O error
   .restore main tmp/main.bak
   .dump main
   PRAGMA foreign_keys=OFF;
  @@ -55,27 +104,55 @@
   .databases
   seq  name             file                                                   
   
   ---  ---------------  
----------------------------------------------------------
  -0    main             /X/src/wdj/tests/tmp/sqldb                             
   
  -1    temp                                                                    
   
  +0    main             /X/src/wdj54/tests/tmp/sqldb                           
   
   .indices Packages
   sqlite_autoindex_Packages_1
   .schema
  +CREATE TABLE Arch (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
  +);
  +CREATE TABLE Name (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
  +);
   CREATE TABLE Nvra (
  -  k  TEXT PRIMARY KEY NOT NULL,
  -  v  INTEGER REFERENCES Packages(i) ON UPDATE RESTRICT ON DELETE RESTRICT
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
   );
   CREATE TABLE Packages (
  -  i  INTEGER UNIQUE PRIMARY KEY NOT NULL,
  -  h  BLOB NOT NULL
  +  v  INTEGER UNIQUE PRIMARY KEY NOT NULL,
  +  k  BLOB NOT NULL
  +);
  +CREATE TABLE Release (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
  +);
  +CREATE TABLE Version (
  +  k  TEXT NOT NULL,
  +  v  INTEGER REFERENCES Packages
   );
   CREATE TRIGGER delete_Packages BEFORE DELETE ON Packages
     BEGIN
  -    DELETE FROM Nvra WHERE v = old.rowid;
  +    DELETE FROM Nvra WHERE v = old.rowid;
  +    DELETE FROM Name WHERE v = old.rowid;
  +    DELETE FROM Version      WHERE v = old.rowid;
  +    DELETE FROM Release      WHERE v = old.rowid;
  +    DELETE FROM Arch WHERE v = old.rowid;
     END;
   CREATE TRIGGER insert_Packages AFTER INSERT ON Packages
     BEGIN
  -    INSERT INTO Nvra (k,v)   VALUES ( new.h, new.rowid );
  +    INSERT INTO Nvra (k,v)   VALUES (
  +     new.k, new.rowid );
  +    INSERT INTO Name (k,v)   VALUES (
  +     SUBSTR(new.k,  1, 4), new.rowid );
  +    INSERT INTO Version (k,v)        VALUES (
  +     SUBSTR(new.k,  6, 3), new.rowid );
  +    INSERT INTO Release (k,v)        VALUES (
  +     SUBSTR(new.k, 10, 1), new.rowid );
  +    INSERT INTO Arch (k,v)   VALUES (
  +     SUBSTR(new.k, 12), new.rowid );
     END;
   .tables
  -Nvra      Packages
  +Arch      Name      Nvra      Packages  Release   Version 
   .exit
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tests/ref/sqldb-basic.sql
  ============================================================================
  $ cvs diff -u -r1.4 -r1.4.4.1 sqldb-basic.sql
  --- rpm/tests/ref/sqldb-basic.sql     10 Apr 2010 18:16:45 -0000      1.4
  +++ rpm/tests/ref/sqldb-basic.sql     27 Apr 2012 01:39:08 -0000      1.4.4.1
  @@ -13,24 +13,48 @@
   .show
   
   -- Instantiate the rpmdb.sql schema.
  +PRAGMA foreign_keys = ON;
   .read ref/rpmdb.sql
   
   -- Basic rpmdbAdd/rpmdbRemove operations using SQL triggers.
   BEGIN TRANSACTION;
  -INSERT into Packages (h) VALUES ('bing-1.2-3.noarch');
  -INSERT into Packages (h) VALUES ('bang-4.5-6.noarch');
  -INSERT into Packages (h) VALUES ('boom-7.8.9.noarch');
  +INSERT into Packages (k) VALUES ('bing-1.2-3.noarch');
  +INSERT into Packages (k) VALUES ('bang-4.5-6.noarch');
  +INSERT into Packages (k) VALUES ('boom-7.8-9.noarch');
   COMMIT TRANSACTION;
   
   SELECT * from Packages;
   SELECT * from Nvra;
  +SELECT * from Name;
  +SELECT * from Version;
  +SELECT * from Release;
  +SELECT * from Arch;
  +
  +-- explicit inner join
  +SELECT Arch.k, Packages.k
  +  FROM Arch
  +  INNER JOIN Packages ON Arch.v = Packages.v;
  +
  +-- implicit inner join
  +SELECT Arch.k, Packages.k
  +  FROM Arch, Packages
  +  WHERE Arch.v = Packages.v;
  +
  +-- equi-join
  +SELECT *
  +  FROM Arch
  +  INNER JOIN Packages USING (v);
   
   BEGIN TRANSACTION;
  -DELETE FROM Packages WHERE i = 2;
  +DELETE FROM Packages WHERE v = 2;
   COMMIT TRANSACTION;
   
   SELECT * from Packages;
   SELECT * from Nvra;
  +SELECT * from Name;
  +SELECT * from Version;
  +SELECT * from Release;
  +SELECT * from Arch;
   
   -- Basic .foo SQL metadata tests.
   .backup main tmp/main.bak
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to