FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
sqlpp11/tests/postgresql/usage/Transaction.cpp at optional · rbock/sqlpp11 · GitHub
rbock
/
sqlpp11
Public
Notifications
You must be signed in to change notification settings
Fork
361
Star
2.6k
Code
Issues
2
Pull requests
1
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
sqlpp11
/
tests
/
postgresql
/
usage
/
Transaction.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
87 lines (76 loc) · 3.44 KB
Breadcrumbs
sqlpp11
/
tests
/
postgresql
/
usage
/
Transaction.cpp
Copy path
File metadata and controls
87 lines (76 loc) · 3.44 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
/*
* Copyright (c) 2017, Volker Aßmann
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#
include
<
iostream
>
#
include
<
memory
>
#
include
<
stdexcept
>
#
include
<
sqlpp11/alias_provider.h
>
#
include
<
sqlpp11/custom_query.h
>
#
include
<
sqlpp11/postgresql/connection.h
>
#
include
<
sqlpp11/sqlpp11.h
>
#
include
<
sqlpp11/transaction.h
>
#
include
"
../../include/test_helpers.h
"
#
include
"
make_test_connection.h
"
namespace
sql
=
sqlpp::postgresql;
SQLPP_ALIAS_PROVIDER
(level);
int
Transaction
(
int
,
char
*[])
{
sql::connection db =
sql::make_test_connection
();
try
{
{
require_equal
(__LINE__, db.
is_transaction_active
(),
false
);
auto
current_level =
std::string
(
db
(
custom_query
(
sqlpp::verbatim
(
"
show transaction_isolation;
"
))
.
with_result_type_of
(
select
(
sqlpp::value
(
"
"
).
as
(level))))
.
front
()
.
level
);
require_equal
(__LINE__, current_level,
"
read committed
"
);
std::cerr <<
"
isolation level outside transaction:
"
<< current_level <<
"
\n
"
;
auto
tx =
start_transaction
(db, sqlpp::isolation_level::serializable);
require_equal
(__LINE__, db.
is_transaction_active
(),
true
);
current_level =
db
(
custom_query
(
sqlpp::verbatim
(
"
show transaction_isolation;
"
))
.
with_result_type_of
(
select
(
sqlpp::value
(
"
"
).
as
(level))))
.
front
()
.
level
;
require_equal
(__LINE__, current_level,
"
serializable
"
);
std::cerr <<
"
isolation level in transaction(serializable) :
"
<< current_level <<
"
\n
"
;
tx.
commit
();
require_equal
(__LINE__, db.
is_transaction_active
(),
false
);
}
require_equal
(__LINE__, db.
get_default_isolation_level
(), sqlpp::isolation_level::read_committed);
db.
set_default_isolation_level
(sqlpp::isolation_level::serializable);
require_equal
(__LINE__, db.
get_default_isolation_level
(), sqlpp::isolation_level::serializable);
}
catch
(
const
sqlpp::exception& ex)
{
std::cerr <<
"
Got exception:
"
<< ex.
what
() << std::endl;
return
1
;
}
catch
(...)
{
std::cerr <<
"
Got unknown exception
"
<< std::endl;
return
1
;
}
return
0
;
}
Back
|
FazBrowse Home
|
New Git URL