On 02/04/09 16:00, Markus Neteler wrote:
On Thu, Apr 2, 2009 at 1:43 PM, Markus Neteler <nete...@osgeo.org> wrote:
On Wed, Apr 1, 2009 at 6:05 PM, Paolo Cavallini <cavall...@faunalia.it> wrote:
Hi all.
I cannot get a result from v.dissolve:

v.dissolve input=reg...@nuovo layer=1 column=REGIAO output=reg_diss
dbmi: Protocol error
Cannot open select cursor: SELECT cat, REGIAO FROM regiao ORDER BY REGIAO
Unable to open vector map on topology level 2
Table linked to vector map does not exist
Vector map not found in current mapset
...
 6.3.0.1-gfossit20090216-1
I got your data set and found:
GRASS 6.5.svn (portugal):~ > echo "SELECT cat, REGIAO FROM regiao
ORDER BY REGIAO" | db.select
dbmi: Protocol error

GRASS 6.5.svn (portugal):~ > echo "SELECT cat, REGIAO FROM regiao" | db.select
cat|REGIAO
1|NOROESTE CISMONTANO
2|ALTO PORTUGAL
3|ALTO PORTUGAL

but in db/driver/dbfexe.c I see

   /* Order */
   if (st->command == SQLP_SELECT && st->orderCol) {
       G_debug(3, "Order selection by %s", st->orderCol);

       /* Find order col */
       cur_cmp_ocol = -1;

which suggests to me that ORDER BY should be supported.
Not sure why it fails.

Offlist we figured it out:
If the "REGIAO" column field value is empty, then it fails. Perhaps
only happening with char columns. Somewhere here:

http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/db/drivers/dbf/dbfexe.c#L644

My wild guess would be that the problem is rather in the cmp_row_asc function, where you have on line 481:

    case DBF_CHAR:
        c1 = tbl->rows[*row1].values[cur_cmp_ocol].c;
        c2 = tbl->rows[*row2].values[cur_cmp_ocol].c;
        return (strcmp(c1, c2));
        break;

Don't know how strcmp handles empty values. Maybe you could add something like

fprinf(stdout, "c1 = %s, c2 = %s\n", a, b);

before the return statement to see the state of the respective character variables ?

Moritz
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

Reply via email to