db76d627569e1dbf809c432f23f11357885a1fa6
[idzebra-moved-to-github.git] / test / api / t4.c
1 /* $Id: t4.c,v 1.13 2004-12-02 11:28:20 adam Exp $
2    Copyright (C) 2003,2004
3    Index Data Aps
4
5 This file is part of the Zebra server.
6
7 Zebra is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
10 version.
11
12 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Zebra; see the file LICENSE.zebra.  If not, write to the
19 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA.
21 */
22
23 /* t4 - insert a small pile of records, search and fetch them */
24
25 #include "testlib.h"
26
27 const char *myrec[] = {
28         "<gils>\n"
29         "  <title>My title</title>\n"
30         "</gils>\n",
31         0};
32         
33 int main(int argc, char **argv)
34 {
35     int i;
36     ZebraService zs = start_up(0, argc, argv);
37     ZebraHandle zh = zebra_open(zs);
38
39     init_data(zh, myrec);
40
41     zebra_begin_trans (zh, 1);
42     for (i = 0; i<1200; i++)
43         zebra_add_record(zh, myrec[0], strlen(myrec[0]));
44     zebra_end_trans(zh);
45     zebra_close(zh);
46     zebra_stop(zs);
47
48     zs = start_service("");
49     zh = zebra_open(zs);
50     zebra_select_database(zh, "Default");
51
52     for (i = 0; i<2; i++)
53     {
54         ZebraRetrievalRecord retrievalRecord[1001];
55         char setname[20];
56         int j;
57         ODR odr_input = odr_createmem(ODR_DECODE);    
58         ODR odr_output = odr_createmem(ODR_DECODE);    
59         YAZ_PQF_Parser parser = yaz_pqf_create();
60         Z_RPNQuery *query = yaz_pqf_parse(parser, odr_input, 
61                                           "@attr 1=4 my");
62         int hits;
63         
64         sprintf(setname, "s%d", i+1);
65         zebra_search_RPN(zh, odr_input, query, setname, &hits);
66
67         yaz_pqf_destroy(parser);
68
69         odr_destroy(odr_input);
70
71         zebra_begin_trans(zh, 1);
72
73         for (j = 0; j<1001; j++)
74             retrievalRecord[j].position = j+1;
75
76         zebra_records_retrieve(zh, odr_output, setname, 0,
77                                VAL_TEXT_XML, 1001, retrievalRecord);
78         
79
80         odr_destroy(odr_output);
81
82         zebra_end_trans(zh);
83
84     }
85     zebra_commit(zh);
86     return close_down(zh, zs, 0);
87 }