Ejemplo n.º 1
0
/** Iterate over all tuples in the list */
static VALUE rdo_mysql_tuple_list_each(VALUE self) {
  RDOMySQLTupleList * list;
  Data_Get_Struct(self, RDOMySQLTupleList, list);

  if (!rb_block_given_p() || list->res == NULL) {
    return self;
  }

  mysql_data_seek(list->res, 0);

  unsigned int    nfields = mysql_num_fields(list->res);
  MYSQL_FIELD   * fields  = mysql_fetch_fields(list->res);
  MYSQL_ROW       row;

  while ((row = mysql_fetch_row(list->res))) {
    unsigned long * lengths = mysql_fetch_lengths(list->res);
    VALUE           hash    = rb_hash_new();
    unsigned int    i       = 0;

    for (; i < nfields; ++i) {
      rb_hash_aset(hash,
          ID2SYM(rb_intern(fields[i].name)),
          rdo_mysql_cast_value(row[i], lengths[i], fields[i], list->encoding));
    }

    rb_yield(hash);
  }

  return self;
}
Ejemplo n.º 2
0
bool MyTblFmncMUsergroup::loadRecBySQL(
			const string& sqlstr
			, FmncMUsergroup** rec
		) {
	MYSQL_RES* dbresult; MYSQL_ROW dbrow; unsigned long* dblengths;
	FmncMUsergroup* _rec = NULL;

	bool retval = false;

	if (mysql_real_query(dbs, sqlstr.c_str(), sqlstr.length())) throw DbsException("DbsException / MySQL: error executing query '" + sqlstr + "'\n");

	dbresult = mysql_store_result(dbs);
	if (!dbresult) throw DbsException("DbsException / MySQL: error storing result! (TblFmncMUsergroup / loadRecBySQL)\n");

	if (mysql_num_rows(dbresult) == 1) {
		dbrow = mysql_fetch_row(dbresult);
		dblengths = mysql_fetch_lengths(dbresult);

		_rec = new FmncMUsergroup();

		if (dbrow[0]) _rec->ref = atoll((char*) dbrow[0]); else _rec->ref = 0;
		if (dbrow[1]) _rec->grp = atoll((char*) dbrow[1]); else _rec->grp = 0;
		if (dbrow[2]) _rec->own = atoll((char*) dbrow[2]); else _rec->own = 0;
		if (dbrow[3]) _rec->sref.assign(dbrow[3], dblengths[3]); else _rec->sref = "";
		if (dbrow[4]) _rec->Comment.assign(dbrow[4], dblengths[4]); else _rec->Comment = "";

		retval = true;
	};

	mysql_free_result(dbresult);

	*rec = _rec;
	return retval;
};
Ejemplo n.º 3
0
/*	fetch_hash2 (internal)	*/
static VALUE fetch_hash2(VALUE obj, VALUE with_table)
{
    MYSQL_RES* res = GetMysqlRes(obj);
    unsigned int n = mysql_num_fields(res);
    MYSQL_ROW row = mysql_fetch_row(res);
    unsigned long* lengths = mysql_fetch_lengths(res);
    MYSQL_FIELD* fields = mysql_fetch_fields(res);
    unsigned int i;
    VALUE hash;
    if (row == NULL)
	return Qnil;
    hash = rb_hash_new();
    for (i=0; i<n; i++) {
	VALUE col;
	if (row[i] == NULL)
	    continue;
	if (with_table == Qnil || with_table == Qfalse)
	    col = rb_tainted_str_new2(fields[i].name);
	else {
	    col = rb_tainted_str_new(fields[i].table, strlen(fields[i].table)+strlen(fields[i].name)+1);
	    RSTRING(col)->ptr[strlen(fields[i].table)] = '.';
	    strcpy(RSTRING(col)->ptr+strlen(fields[i].table)+1, fields[i].name);
	}
	rb_hash_aset(hash, col, row[i]? rb_tainted_str_new(row[i], lengths[i]): Qnil);
    }
    return hash;
}
Ejemplo n.º 4
0
static HB_ERRCODE mysqlGoTo( SQLBASEAREAP pArea, HB_ULONG ulRecNo )
{
   SDDDATA * pSDDData = ( SDDDATA * ) pArea->pSDDData;

   if( ulRecNo == 0 || ulRecNo > pArea->ulRecCount )
   {
      pArea->pRecord      = pArea->pRow[ 0 ];
      pArea->bRecordFlags = pArea->pRowFlags[ 0 ];

      pArea->fPositioned = HB_FALSE;
   }
   else
   {
      pArea->pRecord      = pArea->pRow[ ulRecNo ];
      pArea->bRecordFlags = pArea->pRowFlags[ ulRecNo ];

      if( ! ( pArea->bRecordFlags & SQLDD_FLAG_CACHED ) )
      {
         mysql_row_seek( pSDDData->pResult, ( MYSQL_ROW_OFFSET ) pArea->pRecord );
         pSDDData->pNatRecord = mysql_fetch_row( pSDDData->pResult );
         pSDDData->pNatLength = mysql_fetch_lengths( pSDDData->pResult );
      }

      pArea->fPositioned = HB_TRUE;
   }
   return HB_SUCCESS;
}
Ejemplo n.º 5
0
unsigned long *SQLRES::fetch_lengths()
{
	if(this->parent_conn->connok && this->res)
		return (mysql_fetch_lengths(this->res));

	return (NULL);
}
Ejemplo n.º 6
0
static
int UdmMySQLStoreResult(UDM_DB *db, UDM_SQLRES *R)
{
  size_t mitems= 0;
  MYSQL_ROW mysqlrow;
  
  while((mysqlrow=mysql_fetch_row((MYSQL_RES *)R->specific)))
  {
    size_t col;
    size_t coloffs= R->nRows * R->nCols;  
    unsigned long  *lengths= mysql_fetch_lengths((MYSQL_RES *)R->specific);
    
    if (coloffs + R->nCols >= mitems)
    {
      mitems= mitems ? mitems * 8 : 256;
      R->Items=(UDM_PSTR*)UdmRealloc(R->Items,mitems*sizeof(UDM_PSTR));
    }
    
    for(col= 0; col < R->nCols ; col++)
    {
      UDM_PSTR *I= &R->Items[coloffs + col];
      size_t len;
      len= I->len= lengths[col];
      I->val= (char*) UdmMalloc(len+1);
      memcpy(I->val, mysqlrow[col], len);
      I->val[len]='\0';
    }
    R->nRows++;
  }
  return UDM_OK;
}
Ejemplo n.º 7
0
JSVAL getDataRows(JSARGS args) {
	HandleScope scope;
	String::Utf8Value sql(args[0]->ToString());
	mysql_ping(handle);
	int failure = mysql_query(handle, *sql);
	if (failure) {
		return ThrowException(String::New(mysql_error(handle)));
	}
	MYSQL_RES *result = mysql_use_result(handle);
	if (!result) {
		return scope.Close(False());
	}
	unsigned int num_fields = mysql_num_fields(result);
	MYSQL_FIELD *fields = mysql_fetch_fields(result);

	Handle<Array>a = Array::New(mysql_num_rows(result));
	Local<String> names[num_fields];
	int types[num_fields];
	for (unsigned int n=0; n<num_fields; n++) {
		names[n] = String::New(fields[n].name);
		types[n] = fields[n].type;
	}
	unsigned long rowNdx = 0;
	unsigned int i;
	MYSQL_ROW row;
	while ((row = mysql_fetch_row(result))) {
		unsigned long *lengths = mysql_fetch_lengths(result);
		JSOBJ o = Object::New();
		for (i=0; i<num_fields; i++) {
			if (row[i] == NULL) {
				o->Set(names[i], Null());
			}
			else {
				switch (types[i]) {
				case MYSQL_TYPE_NULL:
					o->Set(names[i], Null());
					break;
				case MYSQL_TYPE_TINY:
				case MYSQL_TYPE_SHORT:
				case MYSQL_TYPE_LONG:
				case MYSQL_TYPE_TIMESTAMP:
				case MYSQL_TYPE_LONGLONG:
				case MYSQL_TYPE_INT24:
					o->Set(names[i], Integer::New(atoi(row[i])));
					break;
				case MYSQL_TYPE_FLOAT:
				case MYSQL_TYPE_DOUBLE:
					o->Set(names[i], Number::New(atof(row[i])));
					break;
				default:
					o->Set(names[i], String::New(row[i], lengths[i]));
					break;
				}
			}
		}
		a->Set(rowNdx++, o);
	}
	mysql_free_result(result);
	return scope.Close(a);
}
Ejemplo n.º 8
0
bool MyTblPlnrAccRMUserUniversal::loadRecBySQL(
			const string& sqlstr
			, PlnrAccRMUserUniversal** rec
		) {
	MYSQL_RES* dbresult; MYSQL_ROW dbrow; unsigned long* dblengths;
	PlnrAccRMUserUniversal* _rec = NULL;

	bool retval = false;

	if (mysql_real_query(dbs, sqlstr.c_str(), sqlstr.length())) throw DbsException("DbsException / MySQL: error executing query '" + sqlstr + "'\n");

	dbresult = mysql_store_result(dbs);
	if (!dbresult) throw DbsException("DbsException / MySQL: error storing result! (TblPlnrAccRMUserUniversal / loadRecBySQL)\n");

	if (mysql_num_rows(dbresult) == 1) {
		dbrow = mysql_fetch_row(dbresult);
		dblengths = mysql_fetch_lengths(dbresult);

		_rec = new PlnrAccRMUserUniversal();

		if (dbrow[0]) _rec->ref = atoll((char*) dbrow[0]); else _rec->ref = 0;
		if (dbrow[1]) _rec->refPlnrMUser = atoll((char*) dbrow[1]); else _rec->refPlnrMUser = 0;
		if (dbrow[2]) _rec->unvIxPlnrVMaintable = atol((char*) dbrow[2]); else _rec->unvIxPlnrVMaintable = 0;
		if (dbrow[3]) _rec->unvUref = atoll((char*) dbrow[3]); else _rec->unvUref = 0;
		if (dbrow[4]) _rec->ixPlnrVAccess = atol((char*) dbrow[4]); else _rec->ixPlnrVAccess = 0;

		retval = true;
	};

	mysql_free_result(dbresult);

	*rec = _rec;
	return retval;
};
Ejemplo n.º 9
0
bool MyTblPlnrQUsrMNUsergroup::loadRecBySQL(
			const string& sqlstr
			, PlnrQUsrMNUsergroup** rec
		) {
	MYSQL_RES* dbresult; MYSQL_ROW dbrow; unsigned long* dblengths;
	PlnrQUsrMNUsergroup* _rec = NULL;

	bool retval = false;

	if (mysql_real_query(dbs, sqlstr.c_str(), sqlstr.length())) throw DbsException("DbsException / MySQL: error executing query '" + sqlstr + "'\n");

	dbresult = mysql_store_result(dbs);
	if (!dbresult) throw DbsException("DbsException / MySQL: error storing result! (TblPlnrQUsrMNUsergroup / loadRecBySQL)\n");

	if (mysql_num_rows(dbresult) == 1) {
		dbrow = mysql_fetch_row(dbresult);
		dblengths = mysql_fetch_lengths(dbresult);

		_rec = new PlnrQUsrMNUsergroup();

		if (dbrow[0]) _rec->qref = atoll((char*) dbrow[0]); else _rec->qref = 0;
		if (dbrow[1]) _rec->jref = atoll((char*) dbrow[1]); else _rec->jref = 0;
		if (dbrow[2]) _rec->jnum = atol((char*) dbrow[2]); else _rec->jnum = 0;
		if (dbrow[3]) _rec->mref = atoll((char*) dbrow[3]); else _rec->mref = 0;
		if (dbrow[4]) _rec->ref = atoll((char*) dbrow[4]); else _rec->ref = 0;
		if (dbrow[5]) _rec->ixPlnrVUserlevel = atol((char*) dbrow[5]); else _rec->ixPlnrVUserlevel = 0;

		retval = true;
	};

	mysql_free_result(dbresult);

	*rec = _rec;
	return retval;
};
Ejemplo n.º 10
0
//-----------------------------------------------------------------------------
// 描述: 将游标指向下一条记录
//-----------------------------------------------------------------------------
bool MySqlDataSet::next()
{
    row_ = mysql_fetch_row(res_);
    if (row_)
    {
        MySqlField* field;
        int fieldCount;
        unsigned long *lengths;

        fieldCount = mysql_num_fields(res_);
        lengths = (unsigned long*)mysql_fetch_lengths(res_);

        for (int i = 0; i < fieldCount; i++)
        {
            if (i < dbFieldList_.getCount())
            {
                field = (MySqlField*)dbFieldList_[i];
            }
            else
            {
                field = new MySqlField();
                dbFieldList_.add(field);
            }

            field->setData(row_[i], lengths[i]);
        }
    }

    return (row_ != NULL);
}
Ejemplo n.º 11
0
VALUE db_mysql_result_each(VALUE self) {
    MYSQL_STMT *s;
    MYSQL_ROW data;
    size_t *lengths, row, col;
    Result *r = db_mysql_result_handle(self);

    if (r->statement && !NIL_P(r->statement))
        return db_mysql_result_from_statement_each(self);

    if (!r->r)
        return Qfalse;

    mysql_data_seek(r->r, 0);

    for (row = 0; row < r->selected; row++) {
        VALUE tuple = rb_hash_new();
        data    = mysql_fetch_row(r->r);
        lengths = mysql_fetch_lengths(r->r);

        for (col = 0; col < (size_t)RARRAY_LEN(r->fields); col++) {
            if (!data[col]) {
                rb_hash_aset(tuple, rb_ary_entry(r->fields, col), Qnil);
            }
            else {
                rb_hash_aset(tuple, rb_ary_entry(r->fields, col),
                    typecast_detect(data[col], lengths[col], NUM2INT(rb_ary_entry(r->types, col))));
            }
        }
        rb_yield(tuple);
    }
    return Qtrue;
}
Ejemplo n.º 12
0
/* {{{ property result_lengths_read */
static zval *result_lengths_read(mysqli_object *obj, zval *retval)
{
    MYSQL_RES *p;
#if defined(MYSQLI_USE_MYSQLND)
    const size_t *ret;
#else
    const zend_ulong *ret;
#endif
    uint32_t field_count;

    CHECK_STATUS(MYSQLI_STATUS_VALID);
    p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
    field_count = mysql_num_fields(p);
    if (!p || !field_count || !(ret = mysql_fetch_lengths(p))) {
        ZVAL_NULL(retval);
    } else {
        zend_ulong i;

        array_init(retval);

        for (i = 0; i < field_count; i++) {
            add_index_long(retval, i, ret[i]);
        }
    }
    return retval;
}
Ejemplo n.º 13
0
static GtCstrTable* gt_rdb_mysql_get_tables(GtRDB *rdb, GtError *err)
{
  GtRDBMySQL *rdbm;
  MYSQL_RES *res;
  MYSQL_ROW row;
  GtCstrTable *tab;
  gt_assert(rdb);
  gt_error_check(err);
  rdbm = gt_rdb_mysql_cast(rdb);
  gt_assert(&rdbm->conn);
  res = mysql_list_tables(&rdbm->conn, NULL); /* NULL means 'all tables' */
  if (!res) {
    gt_error_set(err, "error trying to list tables: %s",
                 mysql_error(&rdbm->conn));
    return NULL;
  }
  tab = gt_cstr_table_new();
  while ((row = mysql_fetch_row(res))) {
    char buf[BUFSIZ];
    GtUword *lengths;
    memset(buf, 0, BUFSIZ);
    lengths = mysql_fetch_lengths(res);
    (void) snprintf(buf, MIN(BUFSIZ, lengths[0])*sizeof (char), "%s",
                    (char*) row[0] ? (char*) row[0] : "NULL");
    gt_cstr_table_add(tab, buf);
  }
  mysql_free_result(res);
  return tab;
}
Ejemplo n.º 14
0
/*
 * Convert a row from result into db API representation
 */
int convert_row(db_con_t* _h, db_res_t* _res, db_row_t* _r)
{
	unsigned long* lengths;
	int i;
#ifndef PARANOID
	if ((!_h) || (!_r) || (!_n)) {
		log(L_ERR, "convert_row(): Invalid parameter value\n");
		return -1;
	}
#endif

	ROW_VALUES(_r) = (db_val_t*)pkg_malloc(sizeof(db_val_t) * RES_COL_N(_res));
	ROW_N(_r) = RES_COL_N(_res);
	if (!ROW_VALUES(_r)) {
		LOG(L_ERR, "convert_row(): No memory left\n");
		return -1;
	}

	lengths = mysql_fetch_lengths(CON_RESULT(_h));

	for(i = 0; i < RES_COL_N(_res); i++) {
		if (str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]), 
			    ((MYSQL_ROW)CON_ROW(_h))[i], lengths[i]) < 0) {
			LOG(L_ERR, "convert_row(): Error while converting value\n");
			free_row(_r);
			return -3;
		}
	}
	return 0;
}
Ejemplo n.º 15
0
int process_get_public_key(CLIENT *client, const VCRYPT_PACKET *packet)
{
	MYSQL_RES *res = db_select("select public_key from users where username=%s",
			packet->username);

	VCRYPT_PACKET *ret_packet;

	if (res) {
		MYSQL_ROW row = mysql_fetch_row(res);
		unsigned long *lengths = mysql_fetch_lengths(res);

		if (row) {
			if (row[0]) {
				ret_packet = packet_new(DEST_SERVER, NULL, RESP_OK, lengths[0]);
				memcpy(ret_packet->payload, row[0], lengths[0]);
			} else {
				ret_packet = packet_new(DEST_SERVER, NULL, RESP_PUBLIC_KEY_NONE,
						0);
			}
		} else {
			ret_packet = packet_new(DEST_SERVER, NULL, RESP_ERR_NOSUCHUSER, 0);
		}
	} else {
		ret_packet = packet_new(DEST_SERVER, NULL, RESP_ERR_TEMPORARY, 0);
	}

	ret_packet->queue_id = packet->queue_id;
	int retval = packet_send_client(client, ret_packet);
	packet_free(ret_packet);
	return retval;
}
Ejemplo n.º 16
0
bool ResultSet::NextRow()
{
    MYSQL_ROW row;

    if (!_result)
        return false;

    row = mysql_fetch_row(_result);
    if (!row)
    {
        CleanUp();
        return false;
    }

    unsigned long* lengths = mysql_fetch_lengths(_result);
    if (!lengths)
    {
        TC_LOG_WARN("sql.sql", "%s:mysql_fetch_lengths, cannot retrieve value lengths. Error %s.", __FUNCTION__, mysql_error(_result->handle));
        CleanUp();
        return false;
    }

    for (uint32 i = 0; i < _fieldCount; i++)
        _currentRow[i].SetStructuredValue(row[i], MysqlTypeToFieldType(_fields[i].type), lengths[i]);

    return true;
}
Ejemplo n.º 17
0
//-------------------------------------------------------------------------------------
bool DBInterfaceMysql::execute(const char* strCommand, uint32 size, MemoryStream * resdata)
{
	bool result = this->query(strCommand, size);

	if (!result)
	{
		return false;
	}

	if(resdata == NULL)
	{
		return true;
	}

	MYSQL_RES * pResult = mysql_store_result(mysql());

	if(pResult)
	{
		if (resdata != NULL)
		{
			uint32 nrows = (uint32)mysql_num_rows(pResult);
			uint32 nfields = (uint32)mysql_num_fields(pResult);

			(*resdata) << nfields << nrows;

			MYSQL_ROW arow;

			while((arow = mysql_fetch_row(pResult)) != NULL)
			{
				unsigned long *lengths = mysql_fetch_lengths(pResult);

				for (uint32 i = 0; i < nfields; i++)
				{
					if (arow[i] == NULL)
					{
						std::string null = "NULL";
						resdata->appendBlob(null.c_str(), null.size());
					}
					else
					{
						resdata->appendBlob(arow[i], lengths[i]);
					}
				}
			}
		}

		mysql_free_result(pResult);
	}
	else
	{
		uint32 nfields = 0;
		uint64 affectedRows = mysql()->affected_rows;
		(*resdata) << ""; // errormsg
		(*resdata) << nfields;
		(*resdata) << affectedRows;
	}

	return true;
}
Ejemplo n.º 18
0
JSVAL getDataRow(JSARGS args) {
	HandleScope scope;
	String::Utf8Value sql(args[0]->ToString());
	mysql_ping(handle);
	int failure = mysql_query(handle, *sql);
	if (failure) {
		return ThrowException(String::New(mysql_error(handle)));
	}
	MYSQL_RES *result = mysql_store_result(handle);
	if (!result) {
		return scope.Close(False());
	}
	unsigned int num_fields = mysql_num_fields(result);
	MYSQL_FIELD *fields = mysql_fetch_fields(result);
	MYSQL_ROW row = mysql_fetch_row(result);
	unsigned long *lengths = mysql_fetch_lengths(result);
	JSOBJ o = Object::New();
	for (unsigned int i=0; i<num_fields; i++) {
		if (row[i] == NULL) {
			o->Set(String::New(fields[i].name), Null());
		}
		else {
			switch (fields[i].type) {
			case MYSQL_TYPE_TINY:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			case MYSQL_TYPE_SHORT:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			case MYSQL_TYPE_LONG:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			case MYSQL_TYPE_FLOAT:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			case MYSQL_TYPE_DOUBLE:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			case MYSQL_TYPE_NULL:
				o->Set(String::New(fields[i].name), Null());
				break;
			case MYSQL_TYPE_TIMESTAMP:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			case MYSQL_TYPE_LONGLONG:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			case MYSQL_TYPE_INT24:
				o->Set(String::New(fields[i].name), Integer::New(atoi(row[i])));
				break;
			default:
				o->Set(String::New(fields[i].name), String::New(row[i], lengths[i]));
				break;
			}
		}
	}
	mysql_free_result(result);
	return scope.Close(o);
}
Ejemplo n.º 19
0
Row UseQueryResult::fetch()
{
    MYSQL_ROW row = mysql_fetch_row(res);
    if (!row)
        checkError(conn->getDriver());

    return Row(row, this, mysql_fetch_lengths(res));
}
Ejemplo n.º 20
0
ulong CMySQLQuery::fieldLength(uint index)
{
#ifdef DEBUG
  qDebug("CMySQLQuery::fieldLength()");
#endif
  
  return !isResultNull() ? *(mysql_fetch_lengths(mysql_res) + index) : 0;  
}
Ejemplo n.º 21
0
void CSql::next(void)
{
	if ( m_hResult != NULL )
	{
		m_hRow = mysql_fetch_row( m_hResult );
		m_fieldLengthArray = mysql_fetch_lengths( m_hResult );
	}
}
Ejemplo n.º 22
0
unsigned long *SQLRES::fetch_lengths()
{
// ftrace("%s [%d] %s \n", __FILE__, __LINE__, __FUNCTION__);
    if(this->parent_conn->connok && this->res)
        return (mysql_fetch_lengths(this->res));

    return (NULL);
}
Ejemplo n.º 23
0
int _GetPlc(MYSQL *db,LISTE *plcs,char *plcname)
{
	char *sel_str;
	int res;
	MYSQL_ROW row;
	if ((plcname!=NULL)&&(strlen(plcname)>0))
		res=asprintf(&sel_str,"SELECT distinct p.* FROM MODBUS as p LEFT JOIN DEFINITION as d ON p.PLCNAME=\
			d.PLCNAME where p.PLC_PATH is not null and d.ADDRESS is not null and d.READING=1\
	and d.TAG_SYSTEM='MB' and p.PLCNAME='%s'",plcname);
	else res=asprintf(&sel_str,"SELECT distinct p.* FROM MODBUS as p LEFT JOIN DEFINITION as d ON p.PLCNAME=\
		d.PLCNAME where p.PLC_ENABLE=1 and p.PLC_PATH is not null and d.ADDRESS is not null and d.READING=1 and d.TAG_SYSTEM='MB'");
	if (res<0)
	{
		Log(LOG_CRIT,"GetPLC : Unable to build query: %s\n",strerror(errno));
		exit(0);
	}
	res=mysql_real_query(db,sel_str,strlen(sel_str));
	free(sel_str);
	if (res)
	{
		_GetErrorCode(db,MysqlErrorMsg);
		return(-1);
	}
	SqlResult=mysql_store_result(db);
	if (SqlResult==NULL)
	{
		_GetErrorCode(db,MysqlErrorMsg);
		return(-1);
	}
	if (plcs==NULL)
	{
		res=mysql_num_rows(SqlResult);
		mysql_free_result(SqlResult);
		return(res);
	}
	while ((row = mysql_fetch_row(SqlResult)))
	{
		unsigned long *lengths;
		lengths = mysql_fetch_lengths(SqlResult);
		PLC *plc=malloc(sizeof(PLC));
		if (plc!=NULL)
		{
			memset(plc,0,sizeof(PLC));
			AddChListe(&PLCs,plc);
			plc->socket=-1;
			snprintf(plc->PlcName,lengths[0]+1,"%s",row[0]);
			snprintf(plc->PlcPath,lengths[1]+1,"%s",row[1]);
			if(row[2]!=NULL) plc->DeviceId=atoi(row[2]);
		} else
		{
			Log(LOG_CRIT,"GetPLC : Unable to allocate memory: %s\n",strerror(errno));
			exit(0);
		}
	}
	mysql_free_result(SqlResult);
	res=_GetErrorCode(db,MysqlErrorMsg);
	if (res) return(res); else return(PLCs.Count);
}
Ejemplo n.º 24
0
int ms_fetch(ClipMachine* mp,SQLROWSET* rs,int recs,ClipVar* eval,int every,ClipVar* ors){
	MS_ROWSET* rowset = (MS_ROWSET*)rs;
	MS_STMT* stmt = rowset->stmt;
	MYSQL_ROW row;
	int i,j,er = 0;
	unsigned long *lens;
	void **rec;

	if(rowset->done)
		return 0;

	if(!recs)
		recs = 0x7fffffff;
	for(j=0;j<recs;j++){
		row = mysql_fetch_row(stmt->res);
		if(!row)
			goto done;
		rowset->loaded++;
		rec = calloc(rowset->nfields,sizeof(void*));

		lens = mysql_fetch_lengths(stmt->res);
		for(i=0;i<rowset->nfields;i++){
			if(row[i]){
				rec[i] = malloc(lens[i] + 4);
				*((int *) (rec[i])) = (int) lens[i];
				memcpy(((char *) rec[i]) + 4, row[i], lens[i]);
			} else {
				rec[i] = NULL;
			}
		}
		rowset->data = realloc(rowset->data,rowset->loaded*sizeof(void*));
		rowset->data[rowset->loaded - 1] = rec;
		if(eval && (eval->t.type == CCODE_t || eval->t.type == PCODE_t) && !(rowset->loaded % every)){
			ClipVar var,*v;
			if(_clip_eval(mp,eval,1,ors,&var)){
				_clip_destroy(mp,&var);
				er = 1;
				goto done;
			}
			v = _clip_vptr(&var);
			if(v->t.type == LOGICAL_t && !v->l.val){
				_clip_destroy(mp,&var);
				goto done;
			}
			_clip_destroy(mp,&var);
		}
	}
	return 0;
done:
	rowset->lastrec = rowset->loaded;
	rowset->done = 1;
	if(!rowset->lastrec){
		rowset->bof = rowset->eof = 1;
		rowset->recno = 0;
	}
	_clip_destroy_c_item(mp,stmt->stmt_item,_C_ITEM_TYPE_SQL);
	return er;
}
Ejemplo n.º 25
0
static Sample*
mysql__search_iter_next_(unsigned long** lengths)
{
	if(!search_result) return NULL;

	clear_result();

	MYSQL_ROW row = mysql_fetch_row(search_result);
	if(!row) return NULL;

	*lengths = mysql_fetch_lengths(search_result); //free? 

	GdkPixbuf* pixbuf = NULL;
	if(row[MYSQL_PIXBUF]){
		pixbuf = blob_to_pixbuf((guint8*)row[MYSQL_PIXBUF], (*lengths)[MYSQL_PIXBUF]);
	}

	int get_int(MYSQL_ROW row, int i)
	{
		return row[i] ? atoi(row[i]) : 0;
	}

	float get_float(MYSQL_ROW row, int i)
	{
		return row[i] ? atof(row[i]) : 0.0;
	}

	static char full_path[PATH_MAX];
	if (row[MYSQL_FULL_PATH] && *(row[MYSQL_FULL_PATH])) {
		strcpy(full_path, row[MYSQL_FULL_PATH]);
	} else {
		snprintf(full_path, PATH_MAX, "%s/%s", row[MYSQL_DIR], row[MYSQL_NAME]);
		full_path[PATH_MAX-1]='\0';
	}

	result.id          = atoi(row[MYSQL_ID]);
	result.full_path   = full_path;
	result.name        = row[MYSQL_NAME];
	result.sample_dir  = row[MYSQL_DIR];
	result.keywords    = row[MYSQL_KEYWORDS];
	result.length      = get_int(row, MYSQL_LENGTH);
	result.sample_rate = get_int(row, MYSQL_SAMPLERATE);
	result.channels    = get_int(row, MYSQL_CHANNELS);
	result.peaklevel   = get_float(row, MYSQL_PEAKLEVEL);
	result.overview    = pixbuf;
	result.notes       = row[MYSQL_NOTES];
	result.ebur        = row[MYSQL_EBUR];
	result.colour_index= get_int(row, MYSQL_COLOUR);
	result.mimetype    = row[MYSQL_MIMETYPE];
	result.online      = get_int(row, MYSQL_ONLINE);
	result.mtime       = get_int(row, MYSQL_MTIME);
	result.bit_depth   = get_int(row, MYSQL_BITDEPTH);
	result.bit_rate    = get_int(row, MYSQL_BITRATE);
	result.frames      = get_int(row, MYSQL_FRAMES); 
	sample_set_metadata(&result, row[MYSQL_METADATA]);
	return &result;
}
Ejemplo n.º 26
0
// return string length, -1 for error
inline int get_next_url(char* buf) {
	MYSQL_ROW row;
	MYSQL_RES *res;
	if (!(res = buffered_get_next_row(&row)))
		return -1;
	unsigned long *lengths = mysql_fetch_lengths(res);
	memcpy(buf, row[0], lengths[0]);
	return lengths[0]; // note that length can be zero
}
Ejemplo n.º 27
0
static Variant HHVM_FUNCTION(mysql_async_fetch_array, const Resource& result,
                                               int result_type /* = 1 */) {
  if ((result_type & PHP_MYSQL_BOTH) == 0) {
    throw_invalid_argument("result_type: %d", result_type);
    return false;
  }

  auto res = php_mysql_extract_result(result);
  if (!res) {
    return false;
  }

  MYSQL_RES* mysql_result = res->get();
  if (!mysql_result) {
    raise_warning("invalid parameter to mysql_async_fetch_array");
    return false;
  }

  MYSQL_ROW mysql_row = nullptr;
  int status = mysql_fetch_row_nonblocking(mysql_result, &mysql_row);
  // Last row, or no row yet available.
  if (status != NET_ASYNC_COMPLETE) {
    return false;
  }
  if (mysql_row == nullptr) {
    res->close();
    return false;
  }

  unsigned long *mysql_row_lengths = mysql_fetch_lengths(mysql_result);
  if (!mysql_row_lengths) {
    return false;
  }

  mysql_field_seek(mysql_result, 0);

  Array ret;
  MYSQL_FIELD *mysql_field;
  int i;
  for (mysql_field = mysql_fetch_field(mysql_result), i = 0; mysql_field;
       mysql_field = mysql_fetch_field(mysql_result), i++) {
    Variant data;
    if (mysql_row[i]) {
      data = mysql_makevalue(String(mysql_row[i], mysql_row_lengths[i],
                                    CopyString), mysql_field);
    }
    if (result_type & PHP_MYSQL_NUM) {
      ret.set(i, data);
    }
    if (result_type & PHP_MYSQL_ASSOC) {
      ret.set(String(mysql_field->name, CopyString), data);
    }
  }

  return ret;
}
Ejemplo n.º 28
0
MYSQL_ROW MySqlConnector::fetch(unsigned long*& lengths, unsigned int& count)
{
	MYSQL_ROW row = mysql_fetch_row(m_result);
	if(row)
	{
		count = mysql_num_fields(m_result);
		lengths = mysql_fetch_lengths(m_result);
	}
	return row;
}
Ejemplo n.º 29
0
const char*
zc_mysqlrec_field_blob_pos(zcDBRec *rec, int pos, int *len, const char *defv)
{
    zcMySQLRec *mrec = (zcMySQLRec*)rec;
    if (mrec->row == NULL || pos < 0 || pos >= mrec->_fields || mrec->row[pos] == NULL)
        return (char*)defv;
    unsigned long *lengths = mysql_fetch_lengths(mrec->res);
    *len = lengths[pos];
    return mrec->row[pos];
}
Ejemplo n.º 30
0
MYSQL_ROW
mysql__search_iter_next(unsigned long** lengths)
{
	if(!search_result) return NULL;

	MYSQL_ROW row = mysql_fetch_row(search_result);
	if(!row) return NULL;
	*lengths = mysql_fetch_lengths(search_result); //free? 
	return row;
}