mirror of
https://github.com/stefanocasazza/ULib.git
synced 2025-09-28 19:05:55 +08:00
105 lines
2.1 KiB
Plaintext
105 lines
2.1 KiB
Plaintext
<!--#
|
|
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;
|
|
|
|
#ifndef AS_cpoll_cppsp_DO
|
|
static UVector<World*>* pvworld_query;
|
|
#endif
|
|
|
|
static void usp_fork_query()
|
|
{
|
|
U_TRACE(5, "::usp_fork_query()")
|
|
|
|
U_NEW(UOrmSession, psql_query, UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
|
|
|
|
if (psql_query->isReady())
|
|
{
|
|
U_NEW(UOrmStatement, pstmt_query, UOrmStatement(*psql_query, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
|
|
|
|
if (pstmt_query == U_NULLPTR)
|
|
{
|
|
U_WARNING("usp_fork_query(): we cound't connect to db");
|
|
|
|
return;
|
|
}
|
|
|
|
if (UOrmDriver::isPGSQL()) *psql_query << "BEGIN TRANSACTION";
|
|
|
|
U_NEW(World, pworld_query, World);
|
|
|
|
pstmt_query->use( pworld_query->id);
|
|
pstmt_query->into(pworld_query->randomNumber);
|
|
|
|
# ifndef AS_cpoll_cppsp_DO
|
|
U_NEW(UVector<World*>, pvworld_query, UVector<World*>(500));
|
|
# endif
|
|
}
|
|
}
|
|
|
|
#ifdef DEBUG
|
|
static void usp_end_query()
|
|
{
|
|
U_TRACE(5, "::usp_end_query()")
|
|
|
|
delete psql_query;
|
|
|
|
if (pstmt_query)
|
|
{
|
|
delete pstmt_query;
|
|
delete pworld_query;
|
|
|
|
# ifndef AS_cpoll_cppsp_DO
|
|
delete pvworld_query;
|
|
# endif
|
|
}
|
|
}
|
|
#endif
|
|
-->
|
|
<!--#header
|
|
Content-Type: application/json
|
|
-->
|
|
<!--#code
|
|
int i = 0, num_queries = UHTTP::getFormFirstNumericValue(1, 500);
|
|
|
|
#ifdef AS_cpoll_cppsp_DO
|
|
USP_PUTS_CHAR('[');
|
|
#endif
|
|
|
|
while (true)
|
|
{
|
|
pworld_query->id = u_get_num_random(10000-1);
|
|
|
|
pstmt_query->execute();
|
|
|
|
#ifdef AS_cpoll_cppsp_DO
|
|
USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_query->id, pworld_query->randomNumber);
|
|
#else
|
|
World* pworld;
|
|
|
|
U_NEW(World, pworld, World(*pworld_query));
|
|
|
|
pvworld_query->push_back(pworld);
|
|
#endif
|
|
|
|
if (++i == num_queries) break;
|
|
|
|
#ifdef AS_cpoll_cppsp_DO
|
|
USP_PUTS_CHAR(',');
|
|
#endif
|
|
}
|
|
|
|
#ifdef AS_cpoll_cppsp_DO
|
|
USP_PUTS_CHAR(']');
|
|
#else
|
|
USP_OBJ_JSON_stringify(*pvworld_query);
|
|
pvworld_query->clear();
|
|
#endif
|
|
-->
|