Changeset 15522 in project


Ignore:
Timestamp:
08/20/09 17:48:07 (10 years ago)
Author:
Thomas Chust
bzr:base-revision:
chust@web.de-20090818161810-onimypazkxt2bgbd
bzr:committer:
Thomas Chust <chust@web.de>
bzr:file-ids:

.bzrignore bzrignore-20090807105757-7e2ie9t28vdpz67q-1
Makefile makefile-20090807105733-xckh9kh901i74p1k-1
demo.scm demo.scm-20090820155252-p2ti8ziw8jpygxh9-1
doc.scm doc.scm-20090807105733-xckh9kh901i74p1k-2
pandora-postgresql.scm pandorapostgresql.sc-20090808201827-2ehfdzdm1lijsubu-1
pandora.html pandora.html-20090807105733-xckh9kh901i74p1k-4
pandora.meta pandora.meta-20090807105733-xckh9kh901i74p1k-5
pandora.setup pandora.setup-20090807105733-xckh9kh901i74p1k-7
postgresql.import.scm postgresql.import.sc-20090820134928-zbnzjki945diu1z1-1
sqlite3.import.scm sqlite3.import.scm-20090820134928-zbnzjki945diu1z1-2
bzr:mapping-version:
v4
bzr:merge:

chust@web.de-20090820155626-pjnvvw5q9wd302a6
bzr:repository-uuid:
fca3e652-9b03-0410-8d7b-ac86a6ce46c4
bzr:revision-id:
chust@web.de-20090820160449-h4henxyemdad6663
bzr:revno:
4
bzr:revprop:branch-nick:
release/4/pandora/trunk
bzr:root:
release/4/pandora/trunk
bzr:text-parents:

.bzrignore chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820155626-pjnvvw5q9wd302a6
Makefile chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820155626-pjnvvw5q9wd302a6
demo.scm chust@web.de-20090820155626-pjnvvw5q9wd302a6
doc.scm chust@web.de-20090818161810-onimypazkxt2bgbd chust@web.de-20090820155626-pjnvvw5q9wd302a6
pandora-postgresql.scm chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090819213455-0as44x8nbsbko228
pandora.html chust@web.de-20090818161810-onimypazkxt2bgbd chust@web.de-20090820155626-pjnvvw5q9wd302a6
pandora.meta chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820134931-98lgdka826cre64e
pandora.setup chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820134931-98lgdka826cre64e
postgresql.import.scm chust@web.de-20090820134931-98lgdka826cre64e
sqlite3.import.scm chust@web.de-20090820134931-98lgdka826cre64e
bzr:timestamp:
2009-08-20 18:04:49.141000032 +0200
bzr:user-agent:
bzr1.17+bzr-svn0.6.3
svn:original-date:
2009-08-20T16:04:49.141000Z
Message:

[sqlite3] Added an example and improved handling of backend dependencies.

Location:
release/4/pandora/trunk
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • release/4/pandora/trunk/.bzrignore

    r15500 r15522  
    33pandora-sqlite3.import.scm
    44pandora-postgresql.import.scm
     5demo.html
  • release/4/pandora/trunk/Makefile

    r15500 r15522  
    55CSI=csi
    66CSC=csc
     7CHICKEN-INSTALL=chicken-install
     8ENSCRIPT=enscript
    79TAR=tar
    810
     
    1618.PHONY: all clean
    1719
    18 all: $(NAME).egg $(NAME).so $(NAME)-sqlite3.so $(NAME)-postgresql.so
     20all: $(NAME).egg
     21        $(CHICKEN-INSTALL) -n
    1922
    2023clean:
     
    2427        $(RM) $(addprefix $(NAME)-postgresql,.so .import.so -static.o)
    2528
    26 $(NAME).egg:    $(addprefix $(NAME),.scm -sqlite3.scm -postgresql.scm .html .setup .meta) \
    27                                                         tests/run.scm egg.jpg doc.scm Makefile
     29$(NAME).egg:    $(addprefix $(NAME),.scm .html .setup .meta) \
     30                                                        $(NAME)-sqlite3.scm sqlite3.import.scm \
     31                                                        $(NAME)-postgresql.scm postgresql.import.scm \
     32                                                        tests/run.scm egg.jpg doc.scm demo.scm Makefile
    2833        $(TAR) czf $@ $^
    2934
    30 $(NAME).html: doc.scm
     35$(NAME).html: doc.scm demo.html
    3136        $(CSI) -s $< >$@
    3237
     
    3843        echo "(compile $(CSCFLAGS)" >>$@; \
    3944        echo "  -c \"$(NAME).scm\" -unit \"$(NAME)\" -o \"$(NAME)-static.o\")" >>$@; \
    40         echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \
     45        echo "(install-extension" >>$@; \
     46        echo "  '$(NAME)" >>$@; \
     47        echo "  '(\"$(NAME).so\" \"$(NAME).import.so\" \"$(NAME)-static.o\")" >>$@; \
     48        echo "  '((version \"$(VERSION)\")" >>$@; \
     49        echo "    (static \"$(NAME)-static.o\")" >>$@; \
     50        echo "    (documentation \"$(NAME).html\" \"egg.jpg\")))" >>$@; \
     51        echo "(compile $(CSCFLAGS)" >>$@; \
    4152        echo "  -s \"$(NAME)-sqlite3.scm\" $(LDLIBS) -j \"$(NAME)-sqlite3\")" >>$@; \
    4253        echo "(compile $(IMPORT_CSCFLAGS)" >>$@; \
    4354        echo "  -s \"$(NAME)-sqlite3.import.scm\")" >>$@; \
    44         echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \
     55        echo "(compile $(CSCFLAGS)" >>$@; \
    4556        echo "  -c \"$(NAME)-sqlite3.scm\" -unit \"$(NAME)-sqlite3\" -o \"$(NAME)-sqlite3-static.o\")" >>$@; \
    46         echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \
     57        echo "(install-extension" >>$@; \
     58        echo "  '$(NAME)-sqlite3" >>$@; \
     59        echo "  '(\"$(NAME)-sqlite3.so\" \"$(NAME)-sqlite3.import.so\" \"$(NAME)-sqlite3-static.o\")" >>$@; \
     60        echo "  '((version \"$(VERSION)\")" >>$@; \
     61        echo "    (static \"$(NAME)-sqlite3-static.o\")))" >>$@; \
     62        echo "(compile $(CSCFLAGS)" >>$@; \
    4763        echo "  -s \"$(NAME)-postgresql.scm\" $(LDLIBS) -j \"$(NAME)-postgresql\")" >>$@; \
    4864        echo "(compile $(IMPORT_CSCFLAGS)" >>$@; \
    4965        echo "  -s \"$(NAME)-postgresql.import.scm\")" >>$@; \
    50         echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \
     66        echo "(compile $(CSCFLAGS)" >>$@; \
    5167        echo "  -c \"$(NAME)-postgresql.scm\" -unit \"$(NAME)-postgresql\" -o \"$(NAME)-postgresql-static.o\")" >>$@; \
    5268        echo "(install-extension" >>$@; \
    53         echo "  '$(NAME)" >>$@; \
    54         echo "  '(\"$(NAME).so\" \"$(NAME).import.so\" \"$(NAME)-static.o\"" >>$@; \
    55         echo "    \"$(NAME)-sqlite3.so\" \"$(NAME)-sqlite3.import.so\" \"$(NAME)-sqlite3-static.o\"" >>$@; \
    56         echo "    \"$(NAME)-postgresql.so\" \"$(NAME)-postgresql.import.so\" \"$(NAME)-postgresql-static.o\")" >>$@; \
     69        echo "  '$(NAME)-postgresql" >>$@; \
     70        echo "  '(\"$(NAME)-postgresql.so\" \"$(NAME)-postgresql.import.so\" \"$(NAME)-postgresql-static.o\")" >>$@; \
    5771        echo "  '((version \"$(VERSION)\")" >>$@; \
    58         echo "    (static \"$(NAME)-static.o\" \"$(NAME)-sqlite3-static.o\" \"$(NAME)-postgresql-static.o\")" >>$@; \
    59         echo "    (documentation \"$(NAME).html\" \"egg.jpg\")))" >>$@
     72        echo "    (static \"$(NAME)-postgresql-static.o\")))" >>$@
    6073
    61 %.so: %.scm
    62         $(CSC) $(CSCFLAGS) -s $< $(LDLIBS) -o $@
     74%.html: %.scm
     75        $(ENSCRIPT) --color --pretty-print=scheme --language=html $< -o $@
    6376
    64 $(NAME)-sqlite3.so: CSCFLAGS += -X $(NAME)
    65 
    66 $(NAME)-postgresql.so: CSCFLAGS += -X $(NAME)
  • release/4/pandora/trunk/doc.scm

    r15516 r15522  
    33;;;; Documentation for pandora
    44
    5 (use eggdoc)
    6 
    7 (define doc '(
     5(use eggdoc htmlprag sxpath)
     6
     7(define doc `(
    88  (eggdoc:begin
    99
     
    1717    (requires
    1818      "check-errors" "matchable" "prometheus"
    19       "uri-generic" "lru-cache" "sql-null"
    20       "sqlite3" "postgresql")
     19      "uri-generic" "lru-cache" "sql-null")
    2120
    2221    (documentation
     
    2423      (p "Pandora provides utilities to access SQL datastores by manipulating object graphs. No SQL statements have to be written by hand.")
    2524      (p "If SQL source is passed to Pandora directly, it is in the form of fragment lists, that is lists containing strings or the symbol " (tt "?") " where a statement parameter placeholder should be inserted by the database driver.")
    26       (p "Pandora comes with backends for SQLite3 and PostgreSQL databases. Additional backends can be added easily.")
     25      (p "Pandora comes with backends for SQLite3 and PostgreSQL databases. If you want to use these backends, you also have to install the " (tt "sqlite3") " and/or " (tt "postgresql") " eggs respectively. Additional backends can be added easily.")
     26      (p "Pandora and its bundled backends all support static linking.")
    2727
    2828      (subsection "Prototypical objects"
     
    4444          (p (tt "URI") " may be a string or a " (tt "uri-generic") " record, but is always passed to the connection prototype's " (tt "clone") " method as a record.")
    4545          (p "The drivers bundled with pandora will handle the URI schemes " (tt "sqlite3") " or " (tt "memory") " for access to SQLite3 databases (the latter always creates a database in memory) and " (tt "postgresql") " or " (tt "psql") " for access to PostgreSQL databases.")
    46           (pre #<<EOD
    47 ;; Example:
     46          (p "Before using a backend, it must be loaded, but it doesn't have to be imported.")
     47          (pre #<<EOD
     48;; Example using SQLite3:
     49(require-extension pandora)
    4850(require-library pandora-sqlite3)
    4951(define store (*sql-datastore* 'connect "sqlite3:test.db"))
     52
     53;; Example using PostgreSQL:
     54(require-extension pandora)
     55(require-library pandora-postgresql)
     56(define store (*sql-datastore* 'connect "psql:"))
    5057EOD
    5158))
     
    270277
    271278      )
     279
     280    (examples
     281      ,(lambda ()
     282         (write-shtml-as-html
     283           (car
     284            ((sxpath '(// pre))
     285             (call-with-input-file "demo.html" html->sxml))))))
    272286
    273287    (history
     
    306320  (append (eggdoc:make-stylesheet doc)
    307321    `((object *macro* . ,eggdoc:make-defsig)
    308       (parent *macro* . ,eggdoc:make-defsig)
    309322      (method *macro* . ,eggdoc:make-defsig))))
  • release/4/pandora/trunk/pandora-postgresql.scm

    r15500 r15522  
    118118
    119119(define-method (*postgresql-datastore* 'with-transaction self resend thunk)
    120   (let ([db (self 'db)] [success? #f] [exception #f])
    121     (dynamic-wind
    122       (lambda ()
    123         (clear-result! (query db "BEGIN TRANSACTION")))
    124       (lambda ()
    125         (handle-exceptions exn
    126           (begin
    127             (set! exception exn)
    128             (print-error-message exn (current-error-port) "Error in transaction"))
    129           (set! success? (thunk))
    130           success?))
    131       (lambda ()
    132         (clear-result!
    133           (query db
    134             (if success?
    135               "COMMIT TRANSACTION"
    136               "ROLLBACK TRANSACTION")))
    137         (and-let* ([exn exception])
    138           (set! exception #f)
    139           (signal exn))))))
     120  (with-transaction (self 'db) thunk))
    140121
    141122(for-each
  • release/4/pandora/trunk/pandora.html

    r15516 r15522  
    166166<li>uri-generic</li>
    167167<li>lru-cache</li>
    168 <li>sql-null</li>
    169 <li>sqlite3</li>
    170 <li>postgresql</li></ul></div>
     168<li>sql-null</li></ul></div>
    171169<div class="section">
    172170<h3>Documentation</h3>
    173171<p>Pandora provides utilities to access SQL datastores by manipulating object graphs. No SQL statements have to be written by hand.</p>
    174172<p>If SQL source is passed to Pandora directly, it is in the form of fragment lists, that is lists containing strings or the symbol <tt>?</tt> where a statement parameter placeholder should be inserted by the database driver.</p>
    175 <p>Pandora comes with backends for SQLite3 and PostgreSQL databases. Additional backends can be added easily.</p>
     173<p>Pandora comes with backends for SQLite3 and PostgreSQL databases. If you want to use these backends, you also have to install the <tt>sqlite3</tt> and/or <tt>postgresql</tt> eggs respectively. Additional backends can be added easily.</p>
     174<p>Pandora and its bundled backends all support static linking.</p>
    176175<div class="subsection">
    177176<h4>Prototypical objects</h4>
     
    191190<p><tt>URI</tt> may be a string or a <tt>uri-generic</tt> record, but is always passed to the connection prototype's <tt>clone</tt> method as a record.</p>
    192191<p>The drivers bundled with pandora will handle the URI schemes <tt>sqlite3</tt> or <tt>memory</tt> for access to SQLite3 databases (the latter always creates a database in memory) and <tt>postgresql</tt> or <tt>psql</tt> for access to PostgreSQL databases.</p>
    193 <pre>;; Example:
     192<p>Before using a backend, it must be loaded, but it doesn't have to be imported.</p>
     193<pre>;; Example using SQLite3:
     194(require-extension pandora)
    194195(require-library pandora-sqlite3)
    195 (define store (*sql-datastore* 'connect &quot;sqlite3:test.db&quot;))</pre></dd>
     196(define store (*sql-datastore* 'connect &quot;sqlite3:test.db&quot;))
     197
     198;; Example using PostgreSQL:
     199(require-extension pandora)
     200(require-library pandora-postgresql)
     201(define store (*sql-datastore* 'connect &quot;psql:&quot;))</pre></dd>
    196202<dt class="definition"><strong>method:</strong> (DATASTORE 'disconnect!) &rArr; VOID</dt>
    197203<dd>
     
    375381<dd>
    376382<p>Adds parentheses around an SQL statement unless they are already present.</p></dd></div></div>
     383<div class="section">
     384<h3>Examples</h3>
     385<div id="examples"><pre>
     386<i><font color="#B22222">;;;; demo.scm
     387</font></i><i><font color="#B22222">;;;; :tabSize=2:indentSize=2:noTabs=true:
     388</font></i><i><font color="#B22222">;;;; This example creates a database that can be used to store discussion
     389</font></i><i><font color="#B22222">;;;; threads and shows how to access it using Pandora.
     390</font></i>(require-extension extras sql-null pandora)
     391(require-library pandora-sqlite3)
     392
     393<i><font color="#B22222">;; The datastore and its schema
     394</font></i>(<b><font color="#A020F0">define</font></b> <b><font color="#0000FF">store</font></b> (*sql-datastore* 'connect <b><font color="#BC8F8F">"sqlite3:demo.db"</font></b>))
     395
     396(for-each
     397  (cut store 'execute &lt;&gt; '())
     398  '((<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS Authors ("</font></b>
     399     <b><font color="#BC8F8F">"  id INTEGER, name TEXT,"</font></b>
     400     <b><font color="#BC8F8F">"  PRIMARY KEY (id),"</font></b>
     401     <b><font color="#BC8F8F">"  UNIQUE (name)"</font></b>
     402     <b><font color="#BC8F8F">")"</font></b>)
     403    (<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS Tags ("</font></b>
     404     <b><font color="#BC8F8F">"  id INTEGER, name INTEGER,"</font></b>
     405     <b><font color="#BC8F8F">"  PRIMARY KEY (id),"</font></b>
     406     <b><font color="#BC8F8F">"  UNIQUE (name)"</font></b>
     407     <b><font color="#BC8F8F">")"</font></b>)
     408    (<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS Posts ("</font></b>
     409     <b><font color="#BC8F8F">"  id INTEGER, author INTEGER, in_reply_to INTEGER, content TEXT,"</font></b>
     410     <b><font color="#BC8F8F">"  PRIMARY KEY (id),"</font></b>
     411     <b><font color="#BC8F8F">"  FOREIGN KEY (author) REFERENCES Authors (id),"</font></b>
     412     <b><font color="#BC8F8F">"  FOREIGN KEY (in_reply_to) REFERENCES Posts (id)"</font></b>
     413     <b><font color="#BC8F8F">")"</font></b>)
     414    (<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS PostTags ("</font></b>
     415     <b><font color="#BC8F8F">"  post INTEGER, tag INTEGER,"</font></b>
     416     <b><font color="#BC8F8F">"  PRIMARY KEY (post, tag),"</font></b>
     417     <b><font color="#BC8F8F">"  FOREIGN KEY (post) REFERENCES Posts (id),"</font></b>
     418     <b><font color="#BC8F8F">"  FOREIGN KEY (tag) REFERENCES Tags (id)"</font></b>
     419     <b><font color="#BC8F8F">")"</font></b>)))
     420
     421<i><font color="#B22222">;; Datasets representing the tables
     422</font></i>(define-values (authors posts tags post-tags)
     423  (apply values
     424    (map
     425      (cut store 'table &lt;&gt;)
     426      '(authors posts tags post-tags))))
     427
     428<i><font color="#B22222">;; Establish link relations between the tables
     429</font></i>(authors 'add-link-slots! 'posts*
     430  '((id author)) posts)
     431(posts 'add-link-slots! 'author* 'set-author*!
     432  '((author id)) authors)
     433
     434(tags 'add-link-slots! 'posts*
     435  '((id tag)) post-tags '((post id)) posts)
     436(posts 'add-link-slots! 'tags* 'set-tags*!
     437  '((id post)) post-tags '((tag id)) tags)
     438
     439(posts 'add-link-slots! 'in-reply-to* 'set-in-reply-to*!
     440  '((in-reply-to id)) posts)
     441(posts 'add-link-slots! 'replies*
     442  '((id in-reply-to)) posts)
     443
     444<i><font color="#B22222">;; Add a few authors
     445</font></i>(define-values (alice bob eve)
     446  (apply values
     447    (map
     448      (<b><font color="#A020F0">lambda</font></b> (name)
     449  (authors 'insert! name: name)
     450  (authors 'filter name: name))
     451      '(<b><font color="#BC8F8F">"Alice"</font></b> <b><font color="#BC8F8F">"Bob"</font></b> <b><font color="#BC8F8F">"Eve"</font></b>))))
     452
     453<i><font color="#B22222">;; Add some useless tags
     454</font></i>(for-each
     455  (cut tags 'insert! name: &lt;&gt;)
     456  '(<b><font color="#BC8F8F">"red"</font></b> <b><font color="#BC8F8F">"green"</font></b> <b><font color="#BC8F8F">"blue"</font></b>))
     457
     458<i><font color="#B22222">;; Start a discussion
     459</font></i>(<b><font color="#A020F0">define</font></b> <b><font color="#0000FF">a-post</font></b>
     460  (<b><font color="#A020F0">begin</font></b>
     461    (posts 'insert! author: (alice 'id) content: <b><font color="#BC8F8F">"Hello everybody!"</font></b>)
     462    ((posts 'filter author: (alice 'id)) 'first)))
     463
     464<i><font color="#B22222">;; Verify that the first post is not a reply to anything
     465</font></i>(pretty-print (sql-null? (a-post 'in-reply-to)))
     466(pretty-print ((a-post 'in-reply-to*) 'count))
     467
     468<i><font color="#B22222">;; Reply
     469</font></i>(for-each
     470  (<b><font color="#A020F0">lambda</font></b> (author content)
     471    (posts 'insert! author: (author 'id) in-reply-to: (a-post 'id) content: content))
     472  (list bob eve)
     473  '(<b><font color="#BC8F8F">"Hi, nice to hear from you."</font></b> <b><font color="#BC8F8F">"Hi there."</font></b>))
     474
     475<i><font color="#B22222">;; Tag all replies both "red" and "blue"
     476</font></i>((a-post 'replies*) 'set-tags*! (tags 'filter name: '(<b><font color="#BC8F8F">"red"</font></b> <b><font color="#BC8F8F">"blue"</font></b>)))
     477
     478<i><font color="#B22222">;; List all posts tagged "blue"
     479</font></i>(pretty-print (((tags 'filter name: <b><font color="#BC8F8F">"blue"</font></b>) 'posts*) 'content #f))
     480
     481<i><font color="#B22222">;; List all posts by Eve
     482</font></i>(pretty-print ((eve 'posts*) 'content #f))
     483
     484<i><font color="#B22222">;; List the tags of all posts by Eve
     485</font></i>(pretty-print (((eve 'posts*) 'tags*) 'name #f))
     486
     487</pre></div></div>
    377488<div class="section">
    378489<h3>Version</h3>
  • release/4/pandora/trunk/pandora.meta

    r15500 r15522  
    66 (category db)
    77 (eggdoc "doc.scm")
    8  (needs check-errors matchable prometheus uri-generic lru-cache sql-null sqlite3 postgresql)
     8 (needs check-errors matchable prometheus uri-generic lru-cache sql-null)
    99 (license "BSD")
    1010 (author "Thomas Chust")
    11  (files "pandora.scm" "pandora-sqlite3.scm" "pandora-postgresql.scm" "pandora.html" "pandora.setup" "tests/run.scm" "egg.jpg"))
     11 (files "pandora.scm" "pandora-sqlite3.scm" "sqlite3.import.scm" "pandora-postgresql.scm" "postgresql.import.scm" "pandora.html" "pandora.setup" "tests/run.scm" "egg.jpg"))
  • release/4/pandora/trunk/pandora.setup

    r15500 r15522  
    55(compile -O2 -d1
    66  -c "pandora.scm" -unit "pandora" -o "pandora-static.o")
    7 (compile -O2 -d1 -X "pandora"
     7(install-extension
     8  'pandora
     9  '("pandora.so" "pandora.import.so" "pandora-static.o")
     10  '((version "1.0.0")
     11    (static "pandora-static.o")
     12    (documentation "pandora.html" "egg.jpg")))
     13(compile -O2 -d1
    814  -s "pandora-sqlite3.scm"  -j "pandora-sqlite3")
    915(compile -O2 -d0
    1016  -s "pandora-sqlite3.import.scm")
    11 (compile -O2 -d1 -X "pandora"
     17(compile -O2 -d1
    1218  -c "pandora-sqlite3.scm" -unit "pandora-sqlite3" -o "pandora-sqlite3-static.o")
    13 (compile -O2 -d1 -X "pandora"
     19(install-extension
     20  'pandora-sqlite3
     21  '("pandora-sqlite3.so" "pandora-sqlite3.import.so" "pandora-sqlite3-static.o")
     22  '((version "1.0.0")
     23    (static "pandora-sqlite3-static.o")))
     24(compile -O2 -d1
    1425  -s "pandora-postgresql.scm"  -j "pandora-postgresql")
    1526(compile -O2 -d0
    1627  -s "pandora-postgresql.import.scm")
    17 (compile -O2 -d1 -X "pandora"
     28(compile -O2 -d1
    1829  -c "pandora-postgresql.scm" -unit "pandora-postgresql" -o "pandora-postgresql-static.o")
    1930(install-extension
    20   'pandora
    21   '("pandora.so" "pandora.import.so" "pandora-static.o"
    22     "pandora-sqlite3.so" "pandora-sqlite3.import.so" "pandora-sqlite3-static.o"
    23     "pandora-postgresql.so" "pandora-postgresql.import.so" "pandora-postgresql-static.o")
     31  'pandora-postgresql
     32  '("pandora-postgresql.so" "pandora-postgresql.import.so" "pandora-postgresql-static.o")
    2433  '((version "1.0.0")
    25     (static "pandora-static.o" "pandora-sqlite3-static.o" "pandora-postgresql-static.o")
    26     (documentation "pandora.html" "egg.jpg")))
     34    (static "pandora-postgresql-static.o")))
Note: See TracChangeset for help on using the changeset viewer.