tier/libgfdb/sql: Correcting logic in sql query for read

Correcting query in the  where clause

from "a & b | c"

to "a & (b | c)"

where "a" is the condition to join the gf_file_tb and gf_flink_tb
through gfids

"b" is the condition for the write heat
and "c" is the condition for read heat

Change-Id: I99226d82b0efb68fbef3a40f02b215bb2b4370d6
BUG: 1286656
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Signed-off-by: Dan Lambright <dlambrig@redhat.com>
Reviewed-on: http://review.gluster.org/12823
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
This commit is contained in:
Joseph Fernandes 2015-11-30 16:51:35 +05:30 committed by Dan Lambright
parent 9c378026e9
commit bdfd087d76
2 changed files with 17 additions and 14 deletions

View File

@ -709,12 +709,12 @@ gf_sqlite3_find_recently_changed_files(void *db_conn,
ret = gf_asprintf (&query_str, "%s AND"
/*First condition: For writes*/
"((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
"( ((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_WMSEC ") >= ? )"
" OR "
/*Second condition: For reads*/
"((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_RWMSEC ") >= ?)", base_query_str);
GF_COL_TB_RWMSEC ") >= ?) )", base_query_str);
if (ret < 0) {
gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED,
@ -805,12 +805,12 @@ gf_sqlite3_find_unchanged_for_time (void *db_conn,
ret = gf_asprintf (&query_str, "%s AND "
/*First condition: For writes*/
"((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
"( ((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_WMSEC ") <= ? )"
" AND "
/*Second condition: For reads*/
"((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_RWMSEC ") <= ?)", base_query_str);
GF_COL_TB_RWMSEC ") <= ?) )", base_query_str);
if (ret < 0) {
gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED,
@ -910,14 +910,14 @@ gf_sqlite3_find_recently_changed_files_freq (void *db_conn,
}
ret = gf_asprintf (&query_str, "%s AND "
/*First condition: For Writes*/
"( ((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
"( ( ((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_WMSEC ") >= ? )"
" AND "" (" GF_COL_TB_WFC " >= ? ) )"
" OR "
/*Second condition: For Reads */
"( ((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_RWMSEC ") >= ?)"
" AND "" (" GF_COL_TB_RFC " >= ? ) )", base_query_str);
" AND "" (" GF_COL_TB_RFC " >= ? ) ) )", base_query_str);
if (ret < 0) {
gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED,
@ -1055,7 +1055,7 @@ gf_sqlite3_find_unchanged_for_time_freq (void *db_conn,
* OR
* File that have write wind time greater than for_time,
* but write_frequency less than freq_write_cnt*/
"( ((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
"( ( ((" GF_COL_TB_WSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_WMSEC ") < ? )"
" OR "
"( (" GF_COL_TB_WFC " < ? ) AND"
@ -1072,7 +1072,7 @@ gf_sqlite3_find_unchanged_for_time_freq (void *db_conn,
" OR "
"( (" GF_COL_TB_RFC " < ? ) AND"
"((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + "
GF_COL_TB_RWMSEC ") >= ? ) ) )", base_query_str);
GF_COL_TB_RWMSEC ") >= ? ) ) ) )", base_query_str);
if (ret < 0) {
gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED,

View File

@ -40,7 +40,6 @@ TEST glusterd
#Create and start a tiered volume
create_dist_vol $NUM_BRICKS
$CLI volume set $V0 diagnostics.client-log-level DEBUG
# Mount FUSE
TEST glusterfs -s $H0 --volfile-id $V0 $M0
@ -48,7 +47,8 @@ TEST glusterfs -s $H0 --volfile-id $V0 $M0
mkdir $M0/$TEST_DIR
cd $M0/${TEST_DIR}
touch file{1..2}
date > file1
touch file2
# attach tier
create_dist_tier_vol $NUM_BRICKS
@ -56,19 +56,22 @@ create_dist_tier_vol $NUM_BRICKS
sleep_until_mid_cycle $PROMOTE_FREQ
# check if promotion on single hit, should fail
echo "hi" >> file2
date >> file2
cat file1
drop_cache $M0
sleep $PROMOTE_FREQ
EXPECT "0" check_counters 0 0
# check if promotion on double hit, should suceed
sleep_until_mid_cycle $PROMOTE_FREQ
echo "hi" >> file2
date >> file2
drop_cache $M0
echo "hi" >> file2
cat file1
date >> file2
drop_cache $M0
cat file1
EXPECT_WITHIN $PROMOTE_FREQ "0" check_counters 1 0
EXPECT_WITHIN $PROMOTE_FREQ "0" check_counters 2 0
TEST ! $CLI volume set $V0 features.record-counters off