/
query.usp
102 lines (80 loc) · 2.03 KB
/
query.usp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!--#
Test type 3: Multiple database queries
TechEmpower Web Framework Benchmarks
-->
<!--#declaration
#include "world.h"
static World* pworld_query;
static UOrmSession* psql_query;
static UOrmStatement* pstmt_query;
static UVector<World*>* pvworld_query;
#ifndef AS_cpoll_cppsp_DO
static UValue* pvalue;
#endif
static void usp_fork_query()
{
U_TRACE(5, "::usp_fork_query()")
psql_query = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
if (psql_query->isReady())
{
pstmt_query = U_NEW(UOrmStatement(*psql_query, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
if (pstmt_query == 0) U_ERROR("usp_fork_query(): we cound't connect to db");
pworld_query = U_NEW(World);
pstmt_query->use( pworld_query->id);
pstmt_query->into(pworld_query->randomNumber);
pvworld_query = U_NEW(UVector<World*>(500));
# ifndef AS_cpoll_cppsp_DO
pvalue = U_NEW(UValue(ARRAY_VALUE));
# endif
}
}
#ifdef DEBUG
static void usp_end_query()
{
U_TRACE(5, "::usp_end_query()")
if (pstmt_query)
{
delete pstmt_query;
delete psql_query;
delete pvworld_query;
delete pworld_query;
#ifndef AS_cpoll_cppsp_DO
delete pvalue;
#endif
}
}
#endif
-->
<!--#args
queries;
-->
<!--#header
Content-Type: application/json; charset=UTF-8
-->
<!--#code
int i = 0, num_queries = queries.strtol();
if (num_queries < 1) num_queries = 1;
else if (num_queries > 500) num_queries = 500;
#ifdef AS_cpoll_cppsp_DO
USP_PUTS_CHAR('[');
#endif
while (true)
{
pworld_query->id = u_get_num_random(10000);
pstmt_query->execute();
#ifdef AS_cpoll_cppsp_DO
USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_query->id, pworld_query->randomNumber);
#endif
pvworld_query->push_back(U_NEW(World(*pworld_query)));
if (++i == num_queries) break;
#ifdef AS_cpoll_cppsp_DO
USP_PUTS_CHAR(',');
#endif
}
#ifdef AS_cpoll_cppsp_DO
USP_PUTS_CHAR(']');
#else
USP_JSON_stringify(*pvalue, UVector<World*>, *pvworld_query);
#endif
pvworld_query->clear();
-->