Thread: Bug?

Bug?

From
Martín Marqués
Date:
What's wrong with this query that used to work great:

webunl=> SELECT DISTINCT count(*),id_curso AS LINK,titulo AS 
TITULO_CARRERA,admin_view_facultades.nombre AS FACULTAD,
webunl-> duracion/12 AS DURACION FROM admin_view, admin_view_facultades
webunl-> WHERE admin_view_facultades.id_carrera=admin_view.id_curso
webunl-> GROUP BY id_curso,titulo,admin_view_facultades.nombre,duracion/12
webunl-> ORDER BY id_curso ASC  LIMIT 20 OFFSET 0 ;count | link |       titulo_carrera        |            facultad
      
 
| duracion
-------+------+-----------------------------+--------------------------------+----------    1 |    1 | Ingenieria en
informatica  | Facultad de Ingenier<ED>a 
 
Qu<ED>mica |        4    1 |    2 | Licenciatura en Matematicas | Facultad de Ingenier<ED>a 
Qu<ED>mica |        4
(2 rows)
webunl=>

As you can see count(*) is 1, even seeing 2 rows selected. What's wrong?
All that chenged is that I recompiled postgreSQL 7.1.2 with the patch from 
the rewriteHandler.c file.

-- 
Porqué usar una base de datos relacional cualquiera,
si podés usar PostgreSQL?
-----------------------------------------------------------------
Martín Marqués                  |        mmarques@unl.edu.ar
Programador, Administrador, DBA |       Centro de Telematica                      Universidad Nacional
        del Litoral
 
-----------------------------------------------------------------


Re: Bug?

From
Tom Lane
Date:
Martín Marqués <martin@bugs.unl.edu.ar> writes:
> What's wrong with this query that used to work great:

Impossible to tell, with that amount of information.

> As you can see count(*) is 1, even seeing 2 rows selected. What's wrong?

Since it's a GROUP BY query, that's not necessarily wrong.  The counts
are the number of input rows in each group.
        regards, tom lane


Re: Bug?

From
"P. Dwayne Miller"
Date:
Looks like it works as it should.  The count(*) function is returning the number of records
in each group by condition, or '1' for each row. The count(*) does not return the total
number of rows returned by the query.

Dwayne

Martín Marqués wrote:

> What's wrong with this query that used to work great:
>
> webunl=> SELECT DISTINCT count(*),id_curso AS LINK,titulo AS
> TITULO_CARRERA,admin_view_facultades.nombre AS FACULTAD,
> webunl-> duracion/12 AS DURACION FROM admin_view, admin_view_facultades
> webunl-> WHERE admin_view_facultades.id_carrera=admin_view.id_curso
> webunl-> GROUP BY id_curso,titulo,admin_view_facultades.nombre,duracion/12
> webunl-> ORDER BY id_curso ASC  LIMIT 20 OFFSET 0 ;
>  count | link |       titulo_carrera        |            facultad
> | duracion
> -------+------+-----------------------------+--------------------------------+----------
>      1 |    1 | Ingenieria en informatica   | Facultad de Ingenier<ED>a
> Qu<ED>mica |        4
>      1 |    2 | Licenciatura en Matematicas | Facultad de Ingenier<ED>a
> Qu<ED>mica |        4
> (2 rows)
>
> webunl=>
>
> As you can see count(*) is 1, even seeing 2 rows selected. What's wrong?
> All that chenged is that I recompiled postgreSQL 7.1.2 with the patch from
> the rewriteHandler.c file.
>
> --
> Porqué usar una base de datos relacional cualquiera,
> si podés usar PostgreSQL?
> -----------------------------------------------------------------
> Martín Marqués                  |        mmarques@unl.edu.ar
> Programador, Administrador, DBA |       Centro de Telematica
>                        Universidad Nacional
>                             del Litoral
> -----------------------------------------------------------------
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster