return no_of_rows;
}
-Eina_List* get_values_from_table_sync_order_by(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* order_column, Eina_Bool is_asc, const char* where_clause)
+Eina_List* get_values_from_table_sync_order_by(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* order_column, Eina_Bool is_asc, const char* where_clause, unsigned int limit, unsigned int offset)
{
Eina_List* query_vals = NULL;
+
if (!table_name) {
return NULL;
}
- sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
- /*****No rows identification*****/
-
- char* row_cnt_qry = (char*)malloc(strlen("SELECT COUNT(*) FROM ") + strlen(table_name) + strlen(";") +1);
- strcpy(row_cnt_qry, "SELECT COUNT(*) FROM ");
- strcat(row_cnt_qry, table_name);
- strcat(row_cnt_qry, ";");
- int no_of_rows = 0;
- //ret = sqlite3_exec(s_info.db,var_query, callback,(void*)s_info.db, &err_msg);
-
- sqlite3_stmt *stmt;
- if (sqlite3_prepare_v2(db, row_cnt_qry, -1, &stmt, NULL) == SQLITE_OK) {
- if (sqlite3_step(stmt) == SQLITE_ERROR) {
- no_of_rows = 0;
- } else {
- no_of_rows = sqlite3_column_int(stmt, 0);
- }
- sqlite3_finalize(stmt);
- }
- close_database(db);
- free(row_cnt_qry);
- if(no_of_rows <= 0) {
+ /*****No rows identification*****/
+ if (get_number_of_rows(table_name, NULL) == 0) {
+ /* There are no rows */
return NULL;
}
/********************************/
- db = create_database(DEFAULT_TG_DATABASE_PATH);
+ sqlite3_stmt *stmt;
+ sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
int ret = 0 ;
char* err_msg = 0;
//int col_count = eina_list_count(column_names);
}
}
-
+ if (limit != TG_DBMGR_NOLIMITED && offset != TG_DBMGR_NOLIMITED) {
+ if (limit > 4000000000 && offset > 4000000000) {
+ /* too big size to handle. ignore */
+ }
+ else {
+ char limit_clause[50] = { 0, };
+ snprintf(limit_clause, 50, " LIMIT %d OFFSET %d ", limit, offset);
+ var_query = realloc(var_query, strlen(var_query) + strlen(limit_clause) + 1);
+ strcat(var_query, limit_clause);
+ }
+ }
var_query = realloc(var_query, strlen(var_query) + 2);
strcat(var_query, ";");
}
-Eina_List* get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* wc, int limit, int offset)
+Eina_List* get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* wc, unsigned int limit, unsigned int offset)
{
sqlite3_stmt *stmt;
const char *name;
query_len += strlen(" FROM ");
query_len += strlen(table_name) + 1;
query_len += (where_clause ? strlen(where_clause) : 0);
+ query_len += ((limit != TG_DBMGR_NOLIMITED && offset != TG_DBMGR_NOLIMITED) ? strlen("LIMIT OFFSET") + 20 : 0);
query_len += 2;
query = malloc(query_len);
ptr++;
}
- if (limit == -1 || offset == -1) {
+ if (limit == TG_DBMGR_NOLIMITED || offset == TG_DBMGR_NOLIMITED) {
ptr += sprintf(ptr, " FROM %s %s;", table_name, where_clause ? where_clause : "");
} else {
ptr += sprintf(ptr, " FROM %s %s LIMIT %d OFFSET %d;", table_name, where_clause ? where_clause : "", limit, offset);
}
-
LOGD("Query: %s", query);
ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL);
col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
- //peer_details = get_values_from_table_sync(db, table_name, col_names, col_types, NULL, -1, -1);
+ //peer_details = get_values_from_table_sync(db, table_name, col_names, col_types, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
char *where_clause = NULL;
if (start_name) {
where_clause = (char *)malloc(strlen(PEER_INFO_TABLE_PRINT_NAME) + strlen(" LIKE '") + strlen(start_name) + strlen("%'") + 1);
strcat(where_clause, "%'");
}
- peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, where_clause);
+ peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_names);
eina_list_free(col_types);
strcat(where_clause, " = ");
strcat(where_clause, chat_id_str);
- peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, where_clause);
+ peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
- chat_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, -1, -1);
+ chat_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_names);
eina_list_free(col_types);
strcat(where_clause, " = ");
strcat(where_clause, chat_id_str);
- chat_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ chat_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
eina_list_free(col_names);
col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
- user_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, -1, -1);
+ user_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_names);
eina_list_free(col_types);
strcat(where_clause, " = ");
strcat(where_clause, unknown_str);
- user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_FIRST_NAME, EINA_TRUE, where_clause);
+ user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_FIRST_NAME, EINA_TRUE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_names);
eina_list_free(col_types);
strcat(where_clause, " = ");
strcat(where_clause, unknown_str);
- user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_PRINT_NAME, EINA_TRUE, where_clause);
+ user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_PRINT_NAME, EINA_TRUE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_names);
eina_list_free(col_types);
strcpy(where_clause, TG_SETTINGS_ROW_ID);
strcat(where_clause, " = ");
strcat(where_clause, user_id_str);
- settings_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ settings_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
if (settings_array && eina_list_count(settings_array) > 0) {
Eina_List* settings_details = eina_list_nth(settings_array, 0);
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
strcat(where_clause, phone_num);
strcat(where_clause, "%'");
- Eina_List* buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ Eina_List* buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
int is_unknown = 0;
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
int is_unknown = 0;
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
int is_unknown = 0;
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
int is_online = -1;
strcat(where_clause, " = ");
strcat(where_clause, buddy_id_str);
- user_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ user_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
eina_list_free(col_names);
strcat(where_clause, marked_del_str);
}
- message_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, MESSAGE_INFO_TABLE_DATE, EINA_FALSE, where_clause);
+ message_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, MESSAGE_INFO_TABLE_DATE, EINA_FALSE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
if (where_clause) {
free(where_clause);
where_clause = NULL;
}
- eina_list_free(col_names);
eina_list_free(col_types);
+ eina_list_free(col_names);
if (message_details && eina_list_count(message_details) > 0) {
strcat(where_clause, " = ");
strcat(where_clause, msg_id_str);
- message_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ message_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
free(where_clause);
eina_list_free(col_names);
Eina_List* col_names = NULL;
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_SIZE);
- Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
if (!vals) {
//("DB error");
Eina_List* col_names = NULL;
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_THUMB_FILE);
- Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
file_path = NULL;
if (!vals) {
Eina_List* col_names = NULL;
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
- Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
file_path = NULL;
if (!vals) {
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
- vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_types);
eina_list_free(col_names);
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_DC);
col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_THUMB_FILE);
- vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_types);
eina_list_free(col_names);
strcat(where_clause, start_name);
strcat(where_clause, "%' )");
- user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_FIRST_NAME, EINA_TRUE, where_clause);
+ user_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, USER_INFO_TABLE_FIRST_NAME, EINA_TRUE, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_names);
eina_list_free(col_types);
Eina_List* col_types = NULL;
col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
- peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, NULL);
+ peer_details = get_values_from_table_sync_order_by(table_name, col_names, col_types, PEER_INFO_TABLE_LAST_MESSAGE_DATE, EINA_FALSE, NULL, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
eina_list_free(col_names);
eina_list_free(col_types);
col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
- Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1);
+ Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, TG_DBMGR_NOLIMITED, TG_DBMGR_NOLIMITED);
file_path = NULL;
if (!vals) {