MCPcopy Index your code
hub / github.com/MapServer/MapServer / msMySQLJoinNext

Function msMySQLJoinNext

mapjoin.c:720–811  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

718}
719
720int msMySQLJoinNext(joinObj *join)
721{
722#ifndef USE_MYSQL
723 msSetError(MS_QUERYERR, "MySQL support not available (compile with --with-mysql)", "msMySQLJoinNext()");
724 return(MS_FAILURE);
725#else
726 int i, n;
727 char qbuf[4000];
728 msMySQLJoinInfo *joininfo = join->joininfo;
729
730 if(!joininfo) {
731 msSetError(MS_JOINERR, "Join connection has not be created.", "msMySQLJoinNext()");
732 return(MS_FAILURE);
733 }
734
735 if(!joininfo->target) {
736 msSetError(MS_JOINERR, "No target specified, run msMySQLJoinPrepare() first.", "msMySQLJoinNext()");
737 return(MS_FAILURE);
738 }
739
740 /* clear any old data */
741 if(join->values) {
742 msFreeCharArray(join->values, join->numitems);
743 join->values = NULL;
744 }
745
746 n = joininfo->rows;
747
748/* for(i=joininfo->nextrecord; i<n; i++) { // find a match */
749/* if(strcmp(joininfo->target, msMySQLReadStringAttribute(joininfo->conn, i, joininfo->toindex)) == 0) break; */
750/* } */
751 snprintf(qbuf, sizeof(qbuf), "SELECT * FROM %s WHERE %s = %s", join->table, joininfo->tocolumn, joininfo->target);
752 MYDEBUG printf("%s<BR>\n", qbuf);
753 if ((joininfo->qresult = msMySQLQuery(qbuf, joininfo->conn))) /* There were some rows found, write 'em out for debug */
754 {
755 int numrows = mysql_affected_rows(joininfo->conn);
756 int numfields = mysql_field_count(joininfo->conn);
757 MYDEBUG printf("%d rows<br>\n", numrows);
758 if (numrows > 0)
759 {
760 MYSQL_ROW row = mysql_fetch_row(joininfo->qresult);
761 for(i=0; i<numfields; i++){
762 MYDEBUG printf("%s,",row[i]);
763 }
764 MYDEBUG printf("<BR>\n");
765 free(join->values);
766 if((join->values = (char **)malloc(sizeof(char *)*join->numitems)) == NULL) {
767 msSetError(MS_MEMERR, NULL, "msMySQLJoinNext()");
768 return(MS_FAILURE);
769 }
770 for(i=0; i<join->numitems; i++){
771/* join->values[i] = msStrdup("\0"); */ /* intialize to zero length strings */
772 join->values[i] = msStrdup(row[i]); /* intialize to zero length strings */
773 /* rows = atoi(row[0]); */
774 }
775 } else {
776 if((join->values = (char **)malloc(sizeof(char *)*join->numitems)) == NULL) {
777 msSetError(MS_MEMERR, NULL, "msMySQLJoinNext()");

Callers 1

msJoinNextFunction · 0.85

Calls 4

msSetErrorFunction · 0.85
msFreeCharArrayFunction · 0.85
msMySQLQueryFunction · 0.85
msStrdupFunction · 0.85

Tested by

no test coverage detected