diff options
Diffstat (limited to 'libglusterfs/src/gfdb/gfdb_sqlite3.c')
| -rw-r--r-- | libglusterfs/src/gfdb/gfdb_sqlite3.c | 61 | 
1 files changed, 48 insertions, 13 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_sqlite3.c b/libglusterfs/src/gfdb/gfdb_sqlite3.c index d43911830ed..a2060fba7af 100644 --- a/libglusterfs/src/gfdb/gfdb_sqlite3.c +++ b/libglusterfs/src/gfdb/gfdb_sqlite3.c @@ -254,7 +254,9 @@ gf_sqlite3_fill_db_operations(gfdb_db_operations_t  *gfdb_db_ops)          gfdb_db_ops->get_db_version = gf_sqlite3_version; -        gfdb_db_ops->get_db_setting = gf_sqlite3_pragma; +        gfdb_db_ops->get_db_params = gf_sqlite3_pragma; + +        gfdb_db_ops->set_db_params = gf_sqlite3_set_pragma;  } @@ -300,7 +302,7 @@ apply_sql_params_db(gf_sql_connection_t *sql_conn, dict_t *param_dict)  {          int ret = -1;          char *temp_str = NULL; -        char sqlite3_config_str[PATH_MAX] = ""; +        char sqlite3_config_str[GF_NAME_MAX] = "";          GF_ASSERT(sql_conn);          GF_ASSERT(param_dict); @@ -526,15 +528,6 @@ int gf_sqlite3_insert(void *db_conn, gfdb_db_record_t *gfdb_db_record)          GF_VALIDATE_OR_GOTO(GFDB_STR_SQLITE3, gfdb_db_record, out); -        /*This is for debugging bug. Will be removed with a bug fix*/ -        if ((GFDB_FOP_WIND == gfdb_db_record->gfdb_fop_path) && -            (strncmp (gfdb_db_record->file_path, "<gfid", 5) == 0)) { -                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_SKIP_PATH, -                        "Skip path <gfid fop=%d", -                        gfdb_db_record->gfdb_fop_type); -                goto out; -        } -          switch (gfdb_db_record->gfdb_fop_path) {          case GFDB_FOP_WIND:                  ret = gf_sql_insert_wind (sql_conn, gfdb_db_record); @@ -1267,7 +1260,7 @@ out: -/* Function to extract PRAGMA or setting from sqlite db +/* Function to extract PRAGMA from sqlite db   * Input:   * void *db_conn        : Sqlite connection   * char *pragma_key     : PRAGMA or setting to be extracted @@ -1319,9 +1312,10 @@ gf_sqlite3_pragma (void *db_conn, char *pragma_key, char **pragma_value)          ret = gf_asprintf (pragma_value, "%s", sqlite3_column_text (pre_stmt, 0));          if (ret <= 0) {                  gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED, -                        "Failed to get version"); +                        "Failed to get %s from db", pragma_key);          } +        ret = 0;  out:          GF_FREE (sqlstring); @@ -1329,3 +1323,44 @@ out:          return ret;  } + +/* Function to set PRAGMA to sqlite db + * Input: + * void *db_conn        : Sqlite connection + * char *pragma_key     : PRAGMA to be set + * char *pragma_value   : the value of the PRAGMA + * Return: + *      On success return 0 + *      On failure return -1 + * */ +int +gf_sqlite3_set_pragma (void *db_conn, char *pragma_key, char *pragma_value) +{ +        int ret = -1; +        gf_sql_connection_t *sql_conn = db_conn; +        char sqlstring[GF_NAME_MAX] = ""; +        char *db_pragma_value = NULL; + +        CHECK_SQL_CONN (sql_conn, out); +        GF_VALIDATE_OR_GOTO (GFDB_STR_SQLITE3, pragma_key, out); +        GF_VALIDATE_OR_GOTO (GFDB_STR_SQLITE3, pragma_value, out); + +        GF_SQLITE3_SET_PRAGMA(sqlstring, pragma_key, "%s", +                              pragma_value, ret, out); + +        ret = gf_sqlite3_pragma (db_conn, pragma_key, &db_pragma_value); +        if (ret < 0) { +                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED, +                        "Failed to get %s pragma", pragma_key); +        } else { +                gf_msg (GFDB_STR_SQLITE3, GF_LOG_INFO, 0, 0, +                        "Value set on DB %s : %s", pragma_key, db_pragma_value); +        } +        GF_FREE (db_pragma_value); + +        ret = 0; + +out: + +        return ret; +}  | 
