query.usp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <!--#
  2. Test type 3: Multiple database queries
  3. TechEmpower Web Framework Benchmarks
  4. -->
  5. <!--#declaration
  6. #include "world.h"
  7. static uint32_t num_queries;
  8. #ifdef U_STATIC_ORM_DRIVER_PGSQL
  9. static void handlerResult(void* res, uint32_t num_result)
  10. {
  11. U_TRACE(5, "::handlerResult(%p,%u)", res, num_result)
  12. U_INTERNAL_ASSERT_EQUALS(PQnfields((PGresult*)res), 1)
  13. U_INTERNAL_ASSERT_EQUALS(PQntuples((PGresult*)res), 1)
  14. char* randomNumber = U_SYSCALL(PQgetvalue, "%p,%d,%d", (PGresult*)res, 0, 0);
  15. if (num_result == 1) World::initResult();
  16. else World::addResult(num_result);
  17. World::addRandom(ntohl(*(uint32_t*)randomNumber));
  18. if (num_result == num_queries) World::endResult();
  19. }
  20. #endif
  21. static void usp_init_query() { World::handlerInitSql(); }
  22. static void usp_fork_query() { World::handlerForkSql(); }
  23. -->
  24. <!--#header
  25. -->
  26. <!--#code
  27. uint32_t i = 0;
  28. num_queries = UHTTP::getFormFirstNumericValue(1, 500);
  29. #ifdef U_STATIC_ORM_DRIVER_PGSQL
  30. if (World::pstmt)
  31. {
  32. while (i < num_queries) World::sendQueryPrepared(i++);
  33. UServer_Base::handler_db1->handlerQuery(handlerResult, num_queries);
  34. }
  35. else
  36. #endif
  37. {
  38. World::initResult();
  39. for (; i < num_queries; ++i)
  40. {
  41. World::pworld_query->id = World::rnumber[i];
  42. World::pstmt_query->execute();
  43. World::handlerResult(i, World::pworld_query->randomNumber);
  44. }
  45. World::endResult();
  46. }
  47. -->