1289177Speter/* rep-cache-db.sql -- schema for use in rep-caching
2289177Speter *   This is intended for use with SQLite 3
3289177Speter *
4289177Speter * ====================================================================
5289177Speter *    Licensed to the Apache Software Foundation (ASF) under one
6289177Speter *    or more contributor license agreements.  See the NOTICE file
7289177Speter *    distributed with this work for additional information
8289177Speter *    regarding copyright ownership.  The ASF licenses this file
9289177Speter *    to you under the Apache License, Version 2.0 (the
10289177Speter *    "License"); you may not use this file except in compliance
11289177Speter *    with the License.  You may obtain a copy of the License at
12289177Speter *
13289177Speter *      http://www.apache.org/licenses/LICENSE-2.0
14289177Speter *
15289177Speter *    Unless required by applicable law or agreed to in writing,
16289177Speter *    software distributed under the License is distributed on an
17289177Speter *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18289177Speter *    KIND, either express or implied.  See the License for the
19289177Speter *    specific language governing permissions and limitations
20289177Speter *    under the License.
21289177Speter * ====================================================================
22289177Speter */
23289177Speter
24289177Speter-- STMT_CREATE_SCHEMA
25289177SpeterPRAGMA PAGE_SIZE = 4096;
26289177Speter
27289177Speter/* A table mapping representation hashes to locations in a rev file. */
28289177SpeterCREATE TABLE rep_cache (
29289177Speter  hash TEXT NOT NULL PRIMARY KEY,
30289177Speter  revision INTEGER NOT NULL,
31289177Speter  offset INTEGER NOT NULL,
32289177Speter  size INTEGER NOT NULL,
33289177Speter  expanded_size INTEGER NOT NULL
34289177Speter  );
35289177Speter
36289177SpeterPRAGMA USER_VERSION = 1;
37289177Speter
38289177Speter
39289177Speter-- STMT_GET_REP
40289177SpeterSELECT revision, offset, size, expanded_size
41289177SpeterFROM rep_cache
42289177SpeterWHERE hash = ?1
43289177Speter
44289177Speter-- STMT_SET_REP
45289177SpeterINSERT OR FAIL INTO rep_cache (hash, revision, offset, size, expanded_size)
46289177SpeterVALUES (?1, ?2, ?3, ?4, ?5)
47289177Speter
48289177Speter-- STMT_GET_REPS_FOR_RANGE
49289177SpeterSELECT hash, revision, offset, size, expanded_size
50289177SpeterFROM rep_cache
51289177SpeterWHERE revision >= ?1 AND revision <= ?2
52289177Speter
53289177Speter-- STMT_GET_MAX_REV
54289177SpeterSELECT MAX(revision)
55289177SpeterFROM rep_cache
56289177Speter
57289177Speter-- STMT_DEL_REPS_YOUNGER_THAN_REV
58289177SpeterDELETE FROM rep_cache
59289177SpeterWHERE revision > ?1
60289177Speter
61289177Speter/* An INSERT takes an SQLite reserved lock that prevents other writes
62289177Speter   but doesn't block reads.  The incomplete transaction means that no
63289177Speter   permanent change is made to the database and the transaction is
64289177Speter   removed when the database is closed.  */
65289177Speter-- STMT_LOCK_REP
66289177SpeterBEGIN TRANSACTION;
67289177SpeterINSERT INTO rep_cache VALUES ('dummy', 0, 0, 0, 0)
68289177Speter
69289177Speter-- STMT_UNLOCK_REP
70289177SpeterROLLBACK TRANSACTION;
71