SQLRETURN complete_rowset( CLHSTMT cl_statement, int complete_to )
{
    int row;
    SQLRETURN ret;

    if ( complete_to == 0 )
    {
        row = cl_statement -> rowset_count;

        do
        {
            ret = fetch_row( cl_statement, 
                    row,
                    -1 );

            if ( SQL_SUCCEEDED( ret ))
            {
                row ++;
            }
            else if ( ret == SQL_NO_DATA )
            {
                cl_statement -> rowset_complete = 1;
                ret = SQL_SUCCESS;
                break;
            }
        }
        while ( SQL_SUCCEEDED( ret ));
    }
    else
    {
        row = cl_statement -> rowset_count;

        do
        {
            ret = fetch_row( cl_statement, 
                    row,
                    -1 );

            if ( SQL_SUCCEEDED( ret ))
            {
                row ++;
            }
            else if ( ret == SQL_NO_DATA )
            {
                cl_statement -> rowset_complete = 1;
                ret = SQL_SUCCESS;
                break;
            }
        }
        while ( SQL_SUCCEEDED( ret ) && row < complete_to );
    }

    return ret;
}
Beispiel #2
0
int test_fetch_role()
{
	MYSQL_RES *res;
	MYSQL_ROW row;
	char sql[256];
	int len;
	char *p;
	uint64_t effect;
	
	len = sprintf(sql, "insert into DBRoleInfo set id = 8686, profession = 1, level = 1, name = ");
	p = sql + len;
	*p++ = '\'';
	p += escape_string(p, "jacktang", 8);
	*p++ = '\'';
	query(sql, 1, &effect);	

	sprintf(sql, "select id, name, profession, level, attribute, bag from DBRoleInfo where id = %lu", 8686l);
	res = query(sql, 1, NULL);
	row = fetch_row(res);

	row[0] = row[0];

	free_query(res);
	return (0);
}
Beispiel #3
0
/*	each {...}	*/
static VALUE each(VALUE obj)
{
    VALUE row;
    check_free(obj);
    while ((row = fetch_row(obj)) != Qnil)
	rb_yield(row);
    return obj;
}
Beispiel #4
0
int main(void)
{
	int len;
	char *lenstr,poststr[512];
	char *player_id, *server_id;
	int can_share = 1;

	init_db((char *)"127.0.0.1", 3306, (char *)"pay", (char *)"root", (char *)"123456");

	printf("Content-Type:text/html\n\n");
	lenstr=getenv("CONTENT_LENGTH");
	if(lenstr == NULL) {
		printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n");
		return (0);
	}
	len=atoi(lenstr) + 1;
	if (len >= 512)
		return (0);
	
	fgets(poststr,len,stdin);
	parse_post_data(poststr, len);
	server_id = get_value((char *)"server_id");
	player_id = get_value((char *)"player_id");
	if (!server_id || !player_id)
		return (0);	
	
	MYSQL_RES *res = NULL;
	MYSQL_ROW row;	
	char sql[256];

	sprintf(sql, "select last_share_time, share_times, pay_times from share where server_id = %s and player_id = %s", server_id, player_id);
	res = query(sql, 1, NULL);
	if (!res) {
		send_no_record();
		goto done;
	}
	row = fetch_row(res);
	if (!row) {
		send_no_record();
		goto done;
	}


	if (!check_can_share(row)) {
		can_share = 0;
	}

	printf("[%d, %s, %s]", can_share, row[1], row[2]);
	
done:
	if (res)
		free_query(res);
	fflush(stdout);
	close_db();		
	return 0;
}
Beispiel #5
0
int fetch_role_handle(PROTO_HEAD *head, uint16_t fd, int len)
{
//	int i;
	MYSQL_RES *res;
	MYSQL_ROW row;	
	char sql[256];
	FETCH_ROLE_DATA_RESPONSE *resp;	
	char sendbuf[sizeof(PROTO_HEAD) + sizeof(*resp)];
	FETCH_ROLE_DATA_REQUEST *request = (FETCH_ROLE_DATA_REQUEST *)head->data;
	

	resp = (FETCH_ROLE_DATA_RESPONSE *)(&sendbuf[sizeof(PROTO_HEAD)]);
	head = (PROTO_HEAD *)(&sendbuf[0]);

	resp->info.name[0] = '\0';
	
	if (len != sizeof(PROTO_HEAD) + sizeof(FETCH_ROLE_DATA_REQUEST)) {
		log4c_category_log(mycat, LOG4C_PRIORITY_INFO, "%s: len[%d] with msg[%u] server[?] fail\n",
			__FUNCTION__, head->len, head->msg_id);
		return (-1);
	}
	sprintf(sql, "select id, name, profession, level, scene_id, pos_x, pos_y from DBRoleInfo where id = %lu", request->id);
	res = query(sql, 1, NULL);
	if (!res) {
		log4c_category_log(mycat, LOG4C_PRIORITY_INFO, "%s: can not fetch role %lu\n",
			__FUNCTION__, request->id);
		resp->result = -1;
		goto done;
	}
	row = fetch_row(res);
	if (!row) {
		log4c_category_log(mycat, LOG4C_PRIORITY_INFO, "%s: can not fetch role %lu\n",
			__FUNCTION__, request->id);
		resp->result = -1;
		goto done;		
	}
	resp->result = 0;
	strcpy(resp->info.name, row[1]);
	resp->info.profession = atoi(row[2]);
	resp->info.level = atoi(row[3]);
	resp->info.scene_id = atoi(row[4]);
	resp->info.pos.pos_x = atoi(row[5]);
	resp->info.pos.pos_y = atoi(row[6]);				

//	resp->bag.max_thing_num = 10;
done:
	if (res)
		free_query(res);
	resp->id = request->id;
	head->len = htons(sizeof(sendbuf));
	head->msg_id = htons(SERVER_PROTO_FETCH_ROLE_RESPONSE);
	send_one_msg(fd, head);
//	send(fd, sendbuf, sizeof(sendbuf), 0);	
	return (0);
}
static SQLRETURN fetch_rowset( CLHSTMT cl_statement, 
        int rows_in_set,
        int row_offset,
        int *fetched_rows,
        SQLUSMALLINT *row_status_array,
        SQLULEN *rows_fetched_ptr )
{
    SQLRETURN ret;
    int row_count = 0;
    int row;

    for ( row = 0; row < rows_in_set; row ++ )
    {
        ret = fetch_row( cl_statement, 
                row + row_offset,
                row );

        if ( row_status_array )
        {
            row_status_array[ row ] = ret;
        }
        if ( SQL_SUCCEEDED( ret ))
        {
            row_count ++;
        }
        else 
        {
            break;
        }
        ret = SQL_SUCCESS;
    }

    if ( ret == SQL_NO_DATA && row > 0 )
	{
        *fetched_rows = row;
    	if ( rows_fetched_ptr )
		{
        	*rows_fetched_ptr = row_count;
		}
		ret = SQL_FETCH_PART_ROWSET;
	}

    if ( SQL_SUCCEEDED( ret ))
    {
        *fetched_rows = row;
    }

    if ( rows_fetched_ptr )
    {
        *rows_fetched_ptr = row_count;
    }

    return ret;
}
Beispiel #7
0
long Query::get_count(const std::string& sql)
{
	long l = 0;
	if (get_result(sql))
	{
		if (fetch_row())
			l = getval();
		free_result();
	}
	return l;
}
Beispiel #8
0
bool CMySql::fetch_assoc(){
    bool res = fetch_row();
    if(res){
        m_assoc->Clear();
        int cnt = num_fields();
        for(int i = 0; i < cnt; i++){
            m_assoc->add(assoc_str[i] + "=" + STR(Row[i]));
        }
    }
    return res;
}
Beispiel #9
0
double Query::get_num(const std::string& sql)
{
	double l = 0;
	if (get_result(sql))
	{
		if (fetch_row())
		{
			l = getnum();
		}
		free_result();
	}
	return l;
}
Beispiel #10
0
const char *Query::get_string(const std::string& sql)
{
	bool found = false;
	m_tmpstr = "";
	if (get_result(sql))
	{
		if (fetch_row())
		{
			m_tmpstr = getstr();
			found = true;
		}
		free_result();
	}
	return m_tmpstr.c_str(); // %! changed from 1.0 which didn't return NULL on failed query
}
Beispiel #11
0
int fetch_results(sqlite3_stmt *stmt, mxArray **results)
{
    struct structlist result_list;
    structlist_init(&result_list);
    int i, num_columns = sqlite3_column_count(stmt);
    mxArray *row = mxCreateStructMatrix(1, 1, 0, NULL);
    for (i = 0; i < num_columns; i++) {
        const char *name = sqlite3_column_name(stmt, i);
        mxAddField(row, name);
    }

    int res;
    while (res = fetch_row(stmt, num_columns, &row),
           res == SQLITE_ROW) {
        structlist_add(&result_list, row);
    }
    *results = structlist_collapse(&result_list);
    return res;
}
Beispiel #12
0
int main(int argc, char *argv[])
{
        int len;
        char *lenstr,poststr[512];
		int server_id;
		int player_id;
		char *content;

		const int page_size = 20;  //每页20条
		int total_page;   //页数
		int cur_page;    //请求的页数
		int total_count;   //总共的记录数
		int start_pos = 0;

		server_id = atoi(basename(argv[0]));
/*
		len = 0;
		for (;;) {
			if (len != 0)
				break;
			else
				sleep(1);
		}
*/
		init_db((char *)"127.0.0.1", 3306, (char *)"sanguo", (char *)"root", (char *)"123456");

        printf("Content-Type:text/html\n\n");
        lenstr=getenv("CONTENT_LENGTH");
        if(lenstr == NULL) {
                printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n");
				return (0);
		}
		len=atoi(lenstr) + 1;
		if (len >= 512)
			return (0);

		fgets(poststr,len,stdin);
		parse_post_data(poststr, len);
		player_id = atoi(get_value((char *)"userid"));
		cur_page = atoi(get_value((char *)"page")) - 1;

		if (cur_page < 0)
			cur_page = 0;
		start_pos = cur_page * page_size;

//		server_id = 15;
//		player_id = 36;
		char sql[512];
		MYSQL_RES *res = NULL;
		MYSQL_ROW row;	
		
		sprintf(sql, "select * from question where server_id = %d and player_id = %d", server_id, player_id);
				
		res = stored_query(sql);	

		total_count = mysql_num_rows(res);
		total_page = total_count / page_size + 1;

		printf("[{\"tp\":%d,\"pn\":%d}", total_page, cur_page + 1);
		
		mysql_data_seek(res, start_pos);
		for (int i = start_pos; i < total_count; ++i) {
			row = fetch_row(res);

			printf(",{\"qc\":\"%s\",\"rc\":\"%s\",\"qs\":%s,\"qt\":\"%s\",\"rt\":\"%s\",\"rn\":\"%s\",\"qtp\":%s}",
				row[2], row[6] ? row[6] : "",
				row[5], row[3],
				row[7] ? row[7] : "",
				row[8] ? row[8] : "",
				row[4]);
			
			if (!row)
				break;
		}
		printf("]");
		free_query(res);		
done:	
		fflush(stdout);
		close_db();		
		return 0;
}
Beispiel #13
0
int main(void)
{
	int len;
	char *lenstr,poststr[512];
	char *player_id, *server_id, *token;

	setenv("http_proxy", "127.0.0.1:8087", 1);
	setenv("https_proxy", "127.0.0.1:8087", 1);	

	init_db((char *)"127.0.0.1", 3306, (char *)"pay", (char *)"root", (char *)"123456");

	printf("Content-Type:text/html\n\n");
/*	
	lenstr=getenv("CONTENT_LENGTH");
	if(lenstr == NULL) {
		printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n");
		return (0);
	}
	len=atoi(lenstr) + 1;
	if (len >= 512)
		return (0);
	
	fgets(poststr,len,stdin);
	parse_post_data(poststr, len);

	len = 10;
	for (; len == 10;)
		sleep(2);
*/	
	lenstr = getenv("QUERY_STRING");
	if(lenstr == NULL) {
		printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n");
		return (0);
	}
	len = strlen(lenstr) + 1;
	parse_post_data(lenstr, len);	
	
	server_id = get_value((char *)"server_id");
	player_id = get_value((char *)"player_id");
	token = get_value((char *)"token");	
	if (!server_id || !player_id || !token)
		return (0);	

//	server_id = "15";
//	player_id = "15";
//	token = "AAACEdEose0cBAKedvUNeBVZAlpbsjUo4r2LHmR3K56gGFbJ4Gwp6PWVEp5wte4X4IdLK5YHziYabuXHCZCoXhzqmSZCKrsiZCLgOb1yjddnI2MyiZBmFK";

	g_data.server_id = server_id;
	g_data.player_id = player_id;
	g_data.times = 0;
	
	MYSQL_RES *res = NULL;
	MYSQL_ROW row;	
	char sql[256];

	sprintf(sql, "select last_share_time, share_times from share where server_id = \"%s\" and player_id = \"%s\"", server_id, player_id);
	res = query(sql, 1, NULL);
	if (!res) {
		send_facebook_share(token, share_msg[0], &g_data);
		goto done;
	}
	row = fetch_row(res);
	if (!row) {
		send_facebook_share(token, share_msg[0], &g_data);		
		goto done;
	}

	if (!check_can_share(row)) {
		send_fail();
		goto done;
	}
	g_data.times = atoi(row[1]);

	free_query(res);
	res = NULL;

	send_facebook_share(token, share_msg[g_data.times], &g_data);		

//	ret = atoi(row[0]);
	
	
done:
	if (res)
		free_query(res);
	fflush(stdout);
	close_db();		
	return 0;
}
Beispiel #14
0
    mwIndex compute(std::vector<mwIndex>& set, sparsevec& yout) {
        
        // allocate residuals for each level
        std::vector< std::vector< double > > resid(N);
        std::vector< double > y;

        // this is defined earlier, but outside the scope of compute(), so I redefine it here
        std::vector<double> psivec(N+1,0.);
        psivec[N] = 1;
        for (lindex k = 1; k <= N ; k++){
            psivec[N-k] = psivec[N-k+1]*t/(double)(N-k+1) + 1;
        } // psivec[k] = psi_k(t)
     
        double sumresid = 0.;
        // the queue stores the entries for the next time step
        std::queue< lindex > Q;
        
        // set the initial residual, add to the queue
        for (size_t i=0; i<set.size(); ++i) {
            mwIndex ri = set[i];
            lindex li = fetch_index(ri);
            //rij = value in entry ri of the input vector
            double rij = 1.;
            sumresid += rij*psivec[0];;
            grow_vector_to_index(resid[0], li, 0.);
            resid[0][li] += rij;
            Q.push( li );
        }
        
        for (lindex j = 0; j < N; ++j) {
            // STEP 0: determine how many entries are in the queue
            // and determine what the residual tolerance is to 
            // push
            size_t qsize = Q.size();
            double pushtol = pushcoeff[j]/(double)qsize;
            
            // STEP 1: process each of the next elements in the 
            // queue and add them to the next level
            
            for (size_t qi = 0; qi < qsize; ++qi) {
                lindex i = Q.front();
                Q.pop();
                            
                double rij = resid[j][i];
            
                if (rij < pushtol) {
                    // skip to the next iteration of the loop
                    continue;
                }
            
                // STEP 2: fetch the row
                fetch_row(i);
            
                // find the degree
                std::pair<lindex, lindex> offsets = lp[i];
                double degofi = (double)(offsets.second - offsets.first);
            
                // update the solution
                grow_vector_to_index(y, i, 0.);
                y[i] += rij;
            
                resid[j][i] = 0.;
                sumresid -= rij*psivec[j];;
            
                double rijs = t*rij/(double)(j+1);
                double ajv = 1./degofi;
                double update = rijs*ajv;
            
                if (j == N-1) {
                    // this is the terminal case, and so we add the column of A
                    // directly to the solution vector y
                    for (lindex nzi = offsets.first; nzi < offsets.second; ++nzi) {
                        lindex v = lneigh[nzi];
                        grow_vector_to_index(y, v, 0.);
                        y[v] += update;
                    }
                    npush += degofi;
                } else {
                    // this is the interior case, and so we add the column of A
                    // to the residual at the next time step.
                    for (lindex nzi = offsets.first; nzi < offsets.second; ++nzi) {
                        lindex v = lneigh[nzi];
                        grow_vector_to_index(resid[j+1], v, 0.);
                        double reold = resid[j+1][v]; 
                        double renew = reold + update;
                        sumresid += update*psivec[j+1];;
                        resid[j+1][v] = renew;
                        // For this implementation, we need all 
                        // non-zero residuals in the queue.
                        if (reold == 0.) {
                            Q.push( v );
                        }
                    }
                    npush += degofi;
                }
                
                if (maxpush > 0 && npush >= maxpush) { break; }
                if (sumresid < eps*exp(t)) { break; }
                // terminate when Q is empty, i.e. we've pushed all r(i,j) > exp(t)*eps*/(N*n*psi_j(t))
            }
            if (sumresid < eps*exp(t)) { break; }
            if (maxpush > 0 && npush >= maxpush) { break; }
        } // end 'for'
        
        
        // store the output back in the solution vector y
        for (lindex i=0; i<y.size(); ++i) {
            if (y[i] > 0) {
                yout.map[gmap[i]] = y[i];
            }
        }
        
        return npush;
    }  
Beispiel #15
0
int main(void)
{
	int len;
	char *lenstr,poststr[512];
	char *player_id, *server_id, *pay_id;
	int n_pay_id;
	int n_pay_times;
	int can_share = 1;
	uint64_t effect = 0;
	MYSQL_RES *res = NULL;
	MYSQL_ROW row;	
	char sql[256];
/*
	len = 10;
	for (;;) {
		if (len != 10)
			break;
		sleep(2);
	}
*/
	
	init_db((char *)"127.0.0.1", 3306, (char *)"pay", (char *)"root", (char *)"123456");

	printf("Content-Type:text/html\n\n");
	lenstr=getenv("CONTENT_LENGTH");
	if(lenstr == NULL) {
		printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n");
		return (0);
	}
	len=atoi(lenstr) + 1;
	if (len >= 512)
		return (0);
	
	fgets(poststr,len,stdin);
	parse_post_data(poststr, len);
	server_id = get_value((char *)"server_id");
	player_id = get_value((char *)"player_id");
	pay_id = get_value((char *)"pay_id");	
	if (!server_id || !player_id || !pay_id)
		return (0);	


	sprintf(sql, "select share_times, pay_times from share where server_id = %s and player_id = %s", server_id, player_id);
	res = query(sql, 1, NULL);
	if (!res) {
		send_fail();
		goto done;
	}
	row = fetch_row(res);
	if (!row) {
		send_fail();
		goto done;
	}

	n_pay_id = atoi(pay_id);
	if (!check_can_get_share_pay(row, n_pay_id)) {
		send_fail();
		goto done;
	}

	n_pay_times = atoi(row[1]);
	n_pay_times |= (1 << n_pay_id);

	free_query(res);
	res = NULL;
	
	sprintf(sql, "update `share` set `pay_times` = %d where `server_id` = %s and `player_id` = %s",
		n_pay_times, server_id, player_id);
	
	query(sql, 1, &effect);

	if (effect != 1) {
		send_fail();
		goto done;
	}
	
	send_success(n_pay_id);
	send_charge_gold_req(atoi(player_id), get_gold[n_pay_id], 0, (char *)"share reward", (char *)"127.0.0.1", (char *)"3008");
	
done:
	if (res)
		free_query(res);
	fflush(stdout);
	close_db();		
	return 0;
}