static int dbfield_isnull( Dbptr db ) { char *fnull = NULL; long fsize; char *stringval = NULL; int isnull = 0; dbquery( db, dbFIELD_SIZE, &fsize ); dbquery( db, dbNULL, &fnull ); allot( char *, stringval, fsize + 2 ); dbget( db, stringval ); strtrim( stringval ); if( ! strcmp( stringval, fnull ) ) { isnull = 1; } else { isnull = 0; } free( stringval ); return isnull; }
profesor *consultar_docente(long docente_id) { profesor *p = NULL; char sql[512]; int num = 0; PGconn *conexion = NULL; PGresult *resultado = NULL; if (docente_id > 0) { p = (profesor *) malloc(sizeof (profesor)); p->docente_id = docente_id; p->aprobacion = 0.0; p->promedio = 0.0; p->reprobacion = 0.0; p->stddev = 0.0; // Busco Reprobados memset(sql, 0, sizeof (sql)); sprintf(sql, "SELECT AVG(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.docente_id = '%ld' AND asignaturas_cursadas.nota < 4 GROUP BY cursos.docente_id", docente_id); conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB); if (conexion != NULL) { resultado = dbquery(conexion, sql); num = dbnumrows(resultado); if (num > 0) { p->reprobacion = getDouble(dbresult(resultado, 0, 0)); dbfree(resultado); } dbclose(conexion); } // Busco Aprobados memset(sql, 0, sizeof (sql)); sprintf(sql, "SELECT AVG(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.docente_id = '%ld' AND asignaturas_cursadas.nota >= 4 GROUP BY cursos.docente_id", docente_id); conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB); if (conexion != NULL) { resultado = dbquery(conexion, sql); num = dbnumrows(resultado); if (num > 0) { p->aprobacion = getDouble(dbresult(resultado, 0, 0)); dbfree(resultado); } dbclose(conexion); } // Busco Promedio memset(sql, 0, sizeof (sql)); sprintf(sql, "SELECT AVG(asignaturas_cursadas.nota) AS promedio, STDDEV(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.docente_id = '%ld' GROUP BY cursos.docente_id ORDER BY promedio DESC", docente_id); conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB); if (conexion != NULL) { resultado = dbquery(conexion, sql); num = dbnumrows(resultado); if (num > 0) { p->promedio = getDouble(dbresult(resultado, 0, 0)); p->stddev = getDouble(dbresult(resultado, 0, 1)); dbfree(resultado); } dbclose(conexion); } } return p; }
/* creates tables with proper schema */ int table_init(MYSQL *dbase) { int r; /* drop tables gen, std and penta */ printf("Table init\n"); dbquery(dbase, "drop table gen"); dbquery(dbase, "drop table penta"); dbquery(dbase, "drop table std"); /* create with proper schema */ r = dbquery(dbase, "create table gen (color int, x bigint, " "t1 text, t2 text, t3 text, t4 text, t5 text)"); if (r < 0) return r; r = dbquery(dbase, "create table std (color int, x bigint, y bigint, " "t1 text, t2 text, t3 text, t4 text, t5 text)"); if (r < 0) return r; r = dbquery(dbase, "create table penta (color int, x5 bigint, x bigint, " "t1 text, t2 text, t3 text, t4 text, t5 text)"); return r; #ifdef FALSE /* create proper indices */ r = dbquery(dbase, "create index genidx on gen (x)"); if (r < 0) return r; r = dbquery(dbase, "create index genidx on std (x, y)"); if (r < 0) return r; r = dbquery(dbase, "create index genidx on penta (x, x5)"); if (r < 0) return r; #endif }
void csdb_flushchannelcounters(void *arg) { int i; if(!channelcounter_count) return; dbquery("BEGIN TRANSACTION;"); for(i=0;i<channelcounter_count;i++) dbquery("%s", channelcounter_bufs[i]); dbquery("COMMIT;"); channelcounter_count = 0; }
ventas_mensuales* getVentasMensuales(char* tienda, int* cantidades_ventas) { ventas_mensuales* ventas = NULL; int i = 0; int num = 0; PGconn *conexion = NULL; PGresult *resultado = NULL; char sql[513]; if (tienda != NULL) { conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB); if (conexion != NULL) { memset(sql, 0, sizeof (sql)); snprintf(sql, 512, "SELECT tienda, EXTRACT(month FROM fecha) AS mes,SUM(monto) AS total FROM ventas WHERE tienda = '%s' GROUP BY tienda, mes ORDER BY mes", tienda); resultado = dbquery(conexion, sql); num = dbnumrows(resultado); if (num > 0) { ventas = (ventas_mensuales *) malloc(num * sizeof (ventas_mensuales)); for (i = 0; i < num; i++) { ventas[i].tienda = getString(dbresult(resultado, i, 0)); ventas[i].mes = getInt(dbresult(resultado, i, 1)); ventas[i].monto = getLong(dbresult(resultado, i, 2)); } dbfree(resultado); } dbclose(conexion); } } *cantidades_ventas = num; return ventas; }
ranking_profesor *ranking_docentes(int semestre, int anio, long *tamano) { ranking_profesor *ranking = NULL; char sql[512]; int i = 0; int num = 0; PGconn *conexion = NULL; PGresult *resultado = NULL; if (semestre > 0 && anio > 0) { memset(sql, 0, sizeof (sql)); sprintf(sql, "SELECT cursos.docente_id, AVG(asignaturas_cursadas.nota) AS promedio, STDDEV(asignaturas_cursadas.nota) FROM cursos INNER JOIN asignaturas_cursadas ON cursos.curso_id=asignaturas_cursadas.curso_id WHERE cursos.semestre='%d' AND cursos.anio='%d' GROUP BY cursos.docente_id ORDER BY promedio DESC", semestre, anio); conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB); if (conexion != NULL) { resultado = dbquery(conexion, sql); num = dbnumrows(resultado); if (num > 0) { ranking = (ranking_profesor *) malloc(num * sizeof (ranking_profesor)); for (i = 0; i < num; i++) { ranking[i].lugar = i + 1; ranking[i].docente_id = getLong(dbresult(resultado, i, 0)); ranking[i].nota = getDouble(dbresult(resultado, i, 1)); ranking[i].stddev = getDouble(dbresult(resultado, i, 2)); ranking[i].semestre = semestre; ranking[i].anio = anio; } dbfree(resultado); } dbclose(conexion); } } *tamano = num; return ranking; }
void csdb_accounthistory_insert(nick *np, char *oldpass, char *newpass, char *oldemail, char *newemail) { reguser *rup=getreguserfromnick(np); char escoldpass[PASSLEN*2+5]; char escnewpass[PASSLEN*2+5]; char escoldemail[EMAILLEN*2+5]; char escnewemail[EMAILLEN*2+5]; if (!rup || UHasOperPriv(rup)) return; if (oldpass) dbescapestring(escoldpass, oldpass, CSMIN(strlen(oldpass), PASSLEN)); else escoldpass[0]='\0'; if (newpass) dbescapestring(escnewpass, newpass, CSMIN(strlen(newpass), PASSLEN)); else escnewpass[0]='\0'; if (oldemail) dbescapestring(escoldemail, oldemail, CSMIN(strlen(oldemail), EMAILLEN)); else escoldemail[0]='\0'; if (newemail) dbescapestring(escnewemail, newemail, CSMIN(strlen(newemail), EMAILLEN)); else escnewemail[0]='\0'; dbquery("INSERT INTO chanserv.accounthistory (userID, changetime, authtime, oldpassword, newpassword, oldemail, " "newemail) VALUES (%u, %lu, %lu, '%s', '%s', '%s', '%s')", rup->ID, getnettime(), np->accountts, escoldpass, escnewpass, escoldemail, escnewemail); }
ventas_horarias* getVentasHorarias(int* cantidades_ventas) { ventas_horarias* ventas = NULL; int i = 0; int num = 0; PGconn *conexion = NULL; PGresult *resultado = NULL; conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB); if (conexion != NULL) { resultado = dbquery(conexion, "SELECT DISTINCT ON (tienda) tienda, EXTRACT(hour FROM fecha) AS hora,SUM(monto) AS total FROM ventas GROUP BY tienda, hora ORDER BY tienda, SUM(monto) DESC"); num = dbnumrows(resultado); if (num > 0) { ventas = (ventas_horarias *) malloc(num * sizeof (ventas_horarias)); for (i = 0; i < num; i++) { ventas[i].tienda = getString(dbresult(resultado, i, 0)); ventas[i].hora = getInt(dbresult(resultado, i, 1)); ventas[i].monto = getLong(dbresult(resultado, i, 2)); } dbfree(resultado); } dbclose(conexion); } *cantidades_ventas = num; return ventas; }
Tbl * dbschema2sqlcreate( Dbptr db, long flags ) { Tbl *sql; char *cmd; Tbl *tables; char *table; long itable; sql = newtbl( 0 ); if( db.table >= 0 ) { cmd = generate_sqltable_create( db, flags ); pushtbl( sql, cmd ); } else { dbquery( db, dbSCHEMA_TABLES, &tables ); for( itable = 0; itable < maxtbl( tables ); itable++ ) { table = gettbl( tables, itable ); db = dblookup( db, "", table, "", "" ); cmd = generate_sqltable_create( db, flags ); pushtbl( sql, cmd ); } } return sql; }
int db2sqldelete( Dbptr db, char *sync, Tbl **tbl, long flags ) { void *stk = 0; char *table; char *cmd; if( *tbl == (Tbl *) NULL ) { *tbl = newtbl( 0 ); } dbquery( db, dbTABLE_NAME, &table ); pushstr( &stk, "DELETE from `" ); pushstr( &stk, table ); pushstr( &stk, "` WHERE " ); pushstr( &stk, " `" ); pushstr( &stk, Db2sql_syncfield_name ); pushstr( &stk, "` = '" ); pushstr( &stk, sync ); pushstr( &stk, "'" ); pushstr( &stk, ";\n" ); cmd = popstr( &stk, 1 ); pushtbl( *tbl, cmd ); return 1; }
void csdb_updateauthinfo(reguser *rup) { char eschost[2*HOSTLEN+1]; dbescapestring(eschost,rup->lastuserhost->content,rup->lastuserhost->length); dbquery("UPDATE chanserv.users SET lastauth=%lu,lastuserhost='%s' WHERE ID=%u", rup->lastauth,eschost,rup->ID); }
int opendb( Dset *dset ) { char key[256]; Tbl *sort_sta_ch_tm; if (dbopen_database ( dset->dbname, "r+", &(dset->db) ) == dbINVALID ) die (0, "Can't open database %s\n", dset->dbname ); dset->db = dblookup ( dset->db, 0, "wfdisc", 0, 0); if ( dset->db.table == dbINVALID ) die (0, "Can't open '%s' wfdisc table.\n", dset->dbname ); /* Select specified sta&chan */ sprintf( key,"(chan =~ /%s/ && sta=~ /%s/)\0", dset->chan, dset->sta ); dset->db = dbsubset( dset->db, key, 0 ); sort_sta_ch_tm = strtbl("sta", "chan", "time", 0 ) ; dset->db = dbsort ( dset->db, sort_sta_ch_tm, 0, 0 ) ; dbquery ( dset->db, dbRECORD_COUNT, &(dset->dbrec) ); if( dset->dbrec <= 0 ) die( 0, " no record with sta == %s and chan == %s in %s.\n", dset->sta, dset->chan, dset->dbname ); return 1; }
ventas_anuales* getVentasAnuales(int* cantidades_ventas) { ventas_anuales* ventas = NULL; int i = 0; int num = 0; PGconn *conexion = NULL; PGresult *resultado = NULL; conexion = dbconnect(SERVIDOR, PUERTO, NOMBREDB, USUARIODB, PASSDB); if (conexion != NULL) { resultado = dbquery(conexion, "SELECT tienda, SUM(monto) FROM ventas GROUP BY tienda"); num = dbnumrows(resultado); if (num > 0) { ventas = (ventas_anuales *) malloc(num * sizeof (ventas_anuales)); for (i = 0; i < num; i++) { ventas[i].tienda = getString(dbresult(resultado, i, 0)); ventas[i].monto = getLong(dbresult(resultado, i, 1)); } dbfree(resultado); } dbclose(conexion); } *cantidades_ventas = num; return ventas; }
void csdb_chanlevhistory_insert(regchan *rcp, nick *np, reguser *trup, flag_t oldflags, flag_t newflags) { reguser *rup=getreguserfromnick(np); assert(rup != NULL); dbquery("INSERT INTO chanserv.chanlevhistory (userID, channelID, targetID, changetime, authtime, " "oldflags, newflags) VALUES (%u, %u, %u, %lu, %lu, %u, %u)", rup->ID, rcp->ID, trup->ID, getnettime(), np->accountts, oldflags, newflags); }
void csdb_updatetopic(regchan *rcp) { char esctopic[TOPICLEN*2+5]; if (rcp->topic) { dbescapestring(esctopic,rcp->topic->content,rcp->topic->length); } else { esctopic[0]='\0'; } dbquery("UPDATE chanserv.channels SET topic='%s' WHERE ID=%u",esctopic,rcp->ID); }
/* returns true if the table t is empty */ int dbtable_empty(Dbptr db,char *t) { long nrows; db=dblookup(db,0,t,0,0); dbquery(db,dbRECORD_COUNT,&nrows); if(nrows>0) return(0); else return(1); }
void csdb_createchanuser(regchanuser *rcup) { char escinfo[210]; if (rcup->info) dbescapestring(escinfo, rcup->info->content, rcup->info->length); else escinfo[0]='\0'; dbquery("INSERT INTO chanserv.chanusers VALUES(%u, %u, %u, %lu, %lu, '%s')", rcup->user->ID, rcup->chan->ID, rcup->flags, rcup->changetime, rcup->usetime, escinfo); }
void set_shot_variable(Dbptr db, Arr *tables, int evid, SEGYTraceHeader *h) { int *ok; char ss_string[30]; long int ntest; double dnorth, deast, elev, edepth; ok = getarr(tables,"shot"); if(ok) { db = dblookup(db,0,"shot",0,0); sprintf(ss_string,"evid == %d",evid); db = dbsubset(db,ss_string,0); dbquery(db,dbRECORD_COUNT,&ntest); if(ntest <= 0) { elog_complain(0,"evid %d not found in shot table\nShot coordinates will not be saved in segy headers\n", evid); dbfree(db); return; } else if(ntest > 1) { elog_notify(0,"multiple rows in shot found for evid %d\n", evid); } db.record = 0; if(dbgetv(db,0, "dnorth",&dnorth, "deast", &deast, "elev", &elev, "edepth",&edepth, NULL) == dbINVALID) { elog_complain(0,"dbgetv error for evid %d\nShot coordinates will not be saved in segy headers\n", evid); return; } /*convert to m from km */ deast *= 1000.0; dnorth *= 1000.0; h->sourceLongOrX = htonl((int32_t) deast); h->sourceLatOrY = htonl((int32_t) dnorth); h->sourceSurfaceElevation = htonl((int32_t) elev); h->sourceDepth = htonl((int32_t) edepth); /* WARNING: This assumes receiver coordinates have already been set */ h->sourceToRecDist = htonl( (int32_t) hypot( dnorth - ((double)(ntohl(h->recLatOrY ))), deast - ((double)(ntohl(h->recLongOrX))) )); } dbfree(db); }
void csdb_updatemaillock(maillock *mlp) { char escpattern[1024], escreason[1024]; dbescapestring(escpattern, mlp->pattern->content, mlp->pattern->length); if (mlp->reason) dbescapestring(escreason, mlp->reason->content, mlp->reason->length); else escreason[0]='\0'; dbquery("UPDATE chanserv.maillocks SET pattern='%s', reason='%s', createdby=%u, created=%jd WHERE ID=%u", escpattern, escreason, mlp->createdby, (intmax_t)mlp->created, mlp->id); }
void csdb_updatechanuser(regchanuser *rcup) { char escinfo[210]; if (rcup->info) dbescapestring(escinfo, rcup->info->content, rcup->info->length); else escinfo[0]='\0'; dbquery("UPDATE chanserv.chanusers SET flags=%u, changetime=%lu, " "usetime=%lu, info='%s' WHERE channelID=%u and userID=%u", rcup->flags, rcup->changetime, rcup->usetime, escinfo, rcup->chan->ID,rcup->user->ID); }
void csdb_createuser(reguser *rup) { char escpassword[25]; char escemail[210]; char esclastuserhost[160]; char escreason[510]; char esccomment[510]; char escusername[35]; char escinfo[210]; char esclastemail[210]; dbescapestring(escusername, rup->username, strlen(rup->username)); dbescapestring(escpassword, rup->password, strlen(rup->password)); if (rup->email) dbescapestring(escemail, rup->email->content, rup->email->length); else escemail[0]='\0'; if (rup->lastemail) dbescapestring(esclastemail, rup->lastemail->content, rup->lastemail->length); else esclastemail[0]='\0'; if (rup->lastuserhost) dbescapestring(esclastuserhost, rup->lastuserhost->content, rup->lastuserhost->length); else esclastuserhost[0]='\0'; if (rup->suspendreason) dbescapestring(escreason, rup->suspendreason->content, rup->suspendreason->length); else escreason[0]='\0'; if (rup->comment) dbescapestring(esccomment, rup->comment->content, rup->comment->length); else esccomment[0]='\0'; if (rup->info) dbescapestring(escinfo, rup->info->content, rup->info->length); else escinfo[0]='\0'; dbquery("INSERT INTO chanserv.users (ID, username, created, lastauth, lastemailchng, " "flags, language, suspendby, suspendexp, suspendtime, lockuntil, password, email, lastuserhost, " "suspendreason, comment, info, lastemail, lastpasschng)" "VALUES (%u,'%s',%lu,%lu,%lu,%u,%u,%u,%lu,%lu,%lu,'%s','%s','%s','%s','%s','%s','%s',%lu)", rup->ID, escusername, rup->created, rup->lastauth, rup->lastemailchange, rup->flags, rup->languageid, rup->suspendby, rup->suspendexp, rup->suspendtime, rup->lockuntil, escpassword, escemail, esclastuserhost, escreason, esccomment, escinfo, esclastemail, rup->lastpasschange); }
void csdb_updatechannel(regchan *rcp) { char escwelcome[WELCOMELEN*2+1]; char esctopic[TOPICLEN*2+1]; char esckey[70]; char escreason[510]; char esccomment[510]; char escname[1000]; dbescapestring(escname, rcp->index->name->content, rcp->index->name->length); if (rcp->welcome) dbescapestring(escwelcome, rcp->welcome->content, rcp->welcome->length); else escwelcome[0]='\0'; if (rcp->topic) dbescapestring(esctopic, rcp->topic->content, rcp->topic->length); else esctopic[0]='\0'; if (rcp->key) dbescapestring(esckey, rcp->key->content, rcp->key->length); else esckey[0]='\0'; if (rcp->suspendreason) dbescapestring(escreason, rcp->suspendreason->content, rcp->suspendreason->length); else escreason[0]='\0'; if (rcp->comment) dbescapestring(esccomment, rcp->comment->content, rcp->comment->length); else esccomment[0]='\0'; dbquery("UPDATE chanserv.channels SET name='%s', flags=%d, forcemodes=%d," "denymodes=%d, chanlimit=%d, autolimit=%d, banstyle=%d," "lastactive=%lu,statsreset=%lu, banduration=%lu, founder=%u," "addedby=%u, suspendby=%u, suspendtime=%lu, chantype=%d, totaljoins=%u," "tripjoins=%u, maxusers=%u, tripusers=%u," "welcome='%s', topic='%s', chankey='%s', suspendreason='%s'," "comment='%s', lasttimestamp=%jd WHERE ID=%u",escname,rcp->flags,rcp->forcemodes, rcp->denymodes,rcp->limit,rcp->autolimit, rcp->banstyle, rcp->lastactive,rcp->statsreset,rcp->banduration, rcp->founder, rcp->addedby, rcp->suspendby, rcp->suspendtime, rcp->chantype,rcp->totaljoins,rcp->tripjoins, rcp->maxusers,rcp->tripusers, escwelcome,esctopic,esckey,escreason,esccomment,(intmax_t)rcp->ltimestamp,rcp->ID); }
void csdb_createchannel(regchan *rcp) { char escwelcome[WELCOMELEN*2+1]; char esctopic[TOPICLEN*2+1]; char esckey[70]; char escreason[510]; char esccomment[510]; char escname[510]; dbescapestring(escname, rcp->index->name->content, rcp->index->name->length); if (rcp->welcome) dbescapestring(escwelcome, rcp->welcome->content, rcp->welcome->length); else escwelcome[0]='\0'; if (rcp->topic) dbescapestring(esctopic, rcp->topic->content, rcp->topic->length); else esctopic[0]='\0'; if (rcp->key) dbescapestring(esckey, rcp->key->content, rcp->key->length); else esckey[0]='\0'; if (rcp->suspendreason) dbescapestring(escreason, rcp->suspendreason->content, rcp->suspendreason->length); else escreason[0]='\0'; if (rcp->comment) dbescapestring(esccomment, rcp->comment->content, rcp->comment->length); else esccomment[0]='\0'; dbquery("INSERT INTO chanserv.channels (ID, name, flags, forcemodes, denymodes," "chanlimit, autolimit, banstyle, created, lastactive, statsreset, " "banduration, founder, addedby, suspendby, suspendtime, chantype, totaljoins, tripjoins," "maxusers, tripusers, welcome, topic, chankey, suspendreason, " "comment, lasttimestamp) VALUES (%u,'%s',%d,%d,%d,%d,%d,%d,%lu,%lu,%lu,%lu,%u," "%u,%u,%lu,%d,%u,%u,%u,%u,'%s','%s','%s','%s','%s',%jd)", rcp->ID, escname, rcp->flags,rcp->forcemodes, rcp->denymodes,rcp->limit,rcp->autolimit, rcp->banstyle, rcp->created, rcp->lastactive,rcp->statsreset,rcp->banduration, rcp->founder, rcp->addedby, rcp->suspendby, rcp->suspendtime, rcp->chantype,rcp->totaljoins,rcp->tripjoins, rcp->maxusers,rcp->tripusers, escwelcome,esctopic,esckey,escreason,esccomment,(intmax_t)rcp->ltimestamp); }
void csdb_createmaillock(maillock *mlp) { char escpattern[1024], escreason[1024]; dbescapestring(escpattern, mlp->pattern->content, mlp->pattern->length); if (mlp->reason) dbescapestring(escreason, mlp->reason->content, mlp->reason->length); else escreason[0]='\0'; dbquery("INSERT INTO chanserv.maillocks (id, pattern, reason, createdby, created) VALUES(%u, '%s', '%s', %u, %jd)", mlp->id,escpattern,escreason,mlp->createdby,(intmax_t)mlp->created); }
void csdb_updateuser(reguser *rup) { char escpassword[25]; char escemail[210]; char esclastuserhost[160]; char escreason[510]; char esccomment[510]; char escinfo[210]; char esclastemail[210]; dbescapestring(escpassword, rup->password, strlen(rup->password)); if (rup->email) dbescapestring(escemail, rup->email->content, rup->email->length); else escemail[0]='\0'; if (rup->lastemail) dbescapestring(esclastemail, rup->lastemail->content, rup->lastemail->length); else esclastemail[0]='\0'; if (rup->lastuserhost) dbescapestring(esclastuserhost, rup->lastuserhost->content, rup->lastuserhost->length); else esclastuserhost[0]='\0'; if (rup->suspendreason) dbescapestring(escreason, rup->suspendreason->content, rup->suspendreason->length); else escreason[0]='\0'; if (rup->comment) dbescapestring(esccomment, rup->comment->content, rup->comment->length); else esccomment[0]='\0'; if (rup->info) dbescapestring(escinfo, rup->info->content, rup->info->length); else escinfo[0]='\0'; dbquery("UPDATE chanserv.users SET lastauth=%lu, lastemailchng=%lu, flags=%u," "language=%u, suspendby=%u, suspendexp=%lu, suspendtime=%lu, lockuntil=%lu, password='******', email='%s'," "lastuserhost='%s', suspendreason='%s', comment='%s', info='%s', lastemail='%s', lastpasschng=%lu " " WHERE ID=%u", rup->lastauth, rup->lastemailchange, rup->flags, rup->languageid, rup->suspendby, rup->suspendexp, rup->suspendtime, rup->lockuntil, escpassword, escemail, esclastuserhost, escreason, esccomment, escinfo, esclastemail, rup->lastpasschange, rup->ID); }
/* Special function used in orbgenloc for repeated task sending a db record to the orb. It basicially implements a standard error message if this fails. Arguments: db - input db pointer. It is ASSUMED that db.record is dbSCRATCH and the relevant record has been copied onto the scratch record before calling this function. orb - orb descriptor to send the scratch record of db to. Returns 0 if all worked. Returns negative of number of failures otherwise with messages placed in error log. Author: Gary L. Pavlis Written: May 1997 */ int save_dbrecord(Dbptr db, int orb) { char *table_name; int ret_code=0; if(db2orbpkt(db,orb)) { dbquery(db,dbTABLE_NAME,table_name); elog_log(0,"Error writing a record for table %s to orb\n", table_name); --ret_code; } return(ret_code); }
Dbptr join_tables(Dbptr db, Pf *pf, Arr *tables) { char *table_name; int *ilogic; Tbl *t; Dbptr dbj; long int nrec; int i; int ntables=0; /* This is an exact copy of above, but it is duplicated because this function could get stolen by another future program because it is pretty general */ t = pfget_tbl(pf,"join_tables"); if(t == NULL) { elog_die(0,"No list of tables to be joined\n"); } for(i=0;i<maxtbl(t);++i) { table_name = gettbl(t,i); ilogic = (int *)getarr(tables,table_name); if(ilogic == NULL) { elog_die(0,"Table %s was not handled previously by check_tables.\nProgramming logic error\n", table_name); } else if(*ilogic) { if(ntables == 0) dbj = dblookup(db,0,table_name,0,0); else dbj=dbjoin(dbj,dblookup(db,0,table_name,0,0), NULL,NULL,0,NULL,0); ++ntables; dbquery(dbj,dbRECORD_COUNT,&nrec); if(nrec == 0) { elog_complain(0, "join_tables error\njoined database has 0 length after joining table %s\n", table_name); dbj.record = dbINVALID; return(dbj); } } } return(dbj); }
mxArray * dbfield2mxArray( Dbptr db ) { mxArray *result; long type; Dbvalue value; char warning[STRSZ]; dbquery( db, dbFIELD_TYPE, &type ); antelope_mex_clear_register( 1 ); if( dbget( db, value.s ) < 0 ) { antelope_mex_clear_register( 1 ); return (mxArray *) NULL; } switch( type ) { case dbDBPTR: result = CreateDbptrStructFromDbptr( value.db ); break; case dbSTRING: copystrip( value.s, value.s, strlen( value.s ) ); result = mxCreateString( value.s ); break; case dbBOOLEAN: case dbINTEGER: case dbYEARDAY: copystrip( value.s, value.s, strlen( value.s ) ); result = CreateDouble( (double) atol( value.s ) ); break; case dbREAL: case dbTIME: copystrip( value.s, value.s, strlen( value.s ) ); result = CreateDouble( (double) atof( value.s ) ); break; default: sprintf( warning, "Can't interpret field of type %s", xlatnum( type, Dbxlat, NDbxlat ) ); mexWarnMsgTxt( warning ); result = (mxArray *) NULL; break; } return result; }
/* fills the points from the structure into the gen table * returns status of the query execution */ int fill_gen_table(MYSQL *dbase, struct gen *g) { int i, r; for (i=0; i<g->total; i++) { r = dbquery(dbase, "INSERT INTO gen (color, x, t1, t2, t3, t4, t5) " "VALUES (%d, %lld, %s, %s, %s, %s, %s)", g->color[i], g->x[i], BIGTEXT, BIGTEXT, BIGTEXT, BIGTEXT, BIGTEXT); if (r < 0) { printf("SQL error\n"); return r; } } return r; }
void csdb_createmail(reguser *rup, int type) { char sqlquery[6000]; char escemail[210]; if (type == QMAIL_NEWEMAIL) { if (rup->email) { dbescapestring(escemail, rup->email->content, rup->email->length); sprintf(sqlquery, "INSERT INTO chanserv.email (userID, emailType, prevEmail) " "VALUES (%u,%u,'%s')", rup->ID, type, escemail); } } else { sprintf(sqlquery, "INSERT INTO chanserv.email (userID, emailType) VALUES (%u,%u)", rup->ID, type); } dbquery("%s", sqlquery); }