Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
We have upgraded GitLab to 15.1. Due to major code changes GitLab was down for some time.
Open sidebar
dcdb
dcdb
Commits
7bf32334
Commit
7bf32334
authored
Apr 15, 2015
by
Axel Auweter
Browse files
Fix memory leaks in dcdbquery & compiler error.
parent
52e98234
Changes
1
Hide whitespace changes
Inline
Side-by-side
DCDBTools/dcdbquery/query.cpp
View file @
7bf32334
...
...
@@ -86,6 +86,8 @@ void DCDBQuery::lookupPublishedSensorPattern(CassSession* session, std::string n
statement
=
cass_prepared_bind
(
prepared
);
cass_statement_bind_string_by_name
(
statement
,
"name"
,
cass_string_init
(
name
.
c_str
()));
cass_future_free
(
future
);
future
=
cass_session_execute
(
session
,
statement
);
cass_future_wait
(
future
);
...
...
@@ -109,6 +111,9 @@ void DCDBQuery::lookupPublishedSensorPattern(CassSession* session, std::string n
cass_result_free
(
result
);
cass_iterator_free
(
iterator
);
}
cass_future_free
(
future
);
cass_statement_free
(
statement
);
cass_prepared_free
(
prepared
);
}
void
DCDBQuery
::
expandSensorPattern
(
CassSession
*
session
,
std
::
string
sensorPattern
,
DCDBTimeStamp
start
,
DCDBTimeStamp
end
,
std
::
list
<
SensorId
>&
sensorIds
)
...
...
@@ -171,6 +176,8 @@ void DCDBQuery::expandSensorPattern(CassSession* session, std::string sensorPatt
cass_statement_bind_bytes
(
statement
,
0
,
lowCb
);
cass_statement_bind_bytes
(
statement
,
1
,
highCb
);
cass_future_free
(
future
);
future
=
cass_session_execute
(
session
,
statement
);
cass_future_wait
(
future
);
...
...
@@ -299,32 +306,53 @@ void DCDBQuery::querySensorsCSV(CassSession* session, std::string sensorName, st
query
<<
";"
;
CassString
csQuery
=
cass_string_init
(
query
.
str
().
c_str
());
CassStatement
*
statement
=
cass_statement_new
(
csQuery
,
0
);
CassFuture
*
future
=
cass_session_execute
(
session
,
statement
);
if
(
cass_future_error_code
(
future
)
==
CASS_OK
)
{
const
CassResult
*
result
=
cass_future_get_result
(
future
);
CassIterator
*
rows
=
cass_iterator_from_result
(
result
);
while
(
cass_iterator_next
(
rows
))
{
const
CassRow
*
row
=
cass_iterator_get_row
(
rows
);
cass_int64_t
ts
,
value
;
cass_value_get_int64
(
cass_row_get_column_by_name
(
row
,
"ts"
),
&
ts
);
cass_value_get_int64
(
cass_row_get_column_by_name
(
row
,
"value"
),
&
value
);
DCDBTimeStamp
t
((
uint64_t
)
ts
);
if
(
localtime
)
{
t
.
convertToLocal
();
}
if
(
raw
)
{
std
::
cout
<<
sensorName
<<
","
<<
std
::
dec
<<
t
.
getRaw
()
<<
","
<<
std
::
dec
<<
value
<<
std
::
endl
;
}
else
{
std
::
cout
<<
sensorName
<<
","
<<
t
.
getString
()
<<
","
<<
std
::
dec
<<
value
<<
std
::
endl
;
}
}
// HACK = sometimes the query fails for unknown reasons
int
retries_left
=
10
;
while
(
retries_left
)
{
CassStatement
*
statement
=
cass_statement_new
(
csQuery
,
0
);
CassFuture
*
future
=
cass_session_execute
(
session
,
statement
);
cass_future_wait
(
future
);
if
(
cass_future_error_code
(
future
)
==
CASS_OK
)
{
const
CassResult
*
result
=
cass_future_get_result
(
future
);
CassIterator
*
rows
=
cass_iterator_from_result
(
result
);
while
(
cass_iterator_next
(
rows
))
{
const
CassRow
*
row
=
cass_iterator_get_row
(
rows
);
cass_int64_t
ts
,
value
;
cass_value_get_int64
(
cass_row_get_column_by_name
(
row
,
"ts"
),
&
ts
);
cass_value_get_int64
(
cass_row_get_column_by_name
(
row
,
"value"
),
&
value
);
DCDBTimeStamp
t
((
uint64_t
)
ts
);
if
(
localtime
)
{
t
.
convertToLocal
();
}
if
(
raw
)
{
std
::
cout
<<
sensorName
<<
","
<<
std
::
dec
<<
t
.
getRaw
()
<<
","
<<
std
::
dec
<<
value
<<
std
::
endl
;
}
else
{
std
::
cout
<<
sensorName
<<
","
<<
t
.
getString
()
<<
","
<<
std
::
dec
<<
value
<<
std
::
endl
;
}
}
cass_iterator_free
(
rows
);
cass_statement_free
(
statement
);
cass_future_free
(
future
);
break
;
}
else
{
retries_left
--
;
sleep
(
1
);
// CassString message = cass_future_error_message(future);
// fprintf(stderr, "Error: %.*s\n", (int)message.length, message.data);
}
cass_statement_free
(
statement
);
cass_future_free
(
future
);
}
if
(
retries_left
==
0
)
{
fprintf
(
stderr
,
"Error reading data. Please try again later.
\n
"
);
}
cass_statement_free
(
statement
);
cass_future_free
(
future
);
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment