Hi Andrew,

I'm not sure about this for 7.4.2, but I'm running 8.1.3 and when I ran into a problem like that (having to select two distinct options) the solution that worked for me was to put the entire or statement within parentheses. In your case, that would be this: espsm_asme=# select customer_app_config_id, customer_app_config_name
from customer_app_config where (customer_app_config_id = 5929 or
customer_app_config_id = 11527) order by customer_app_config_id;

 The result is the same, in fact, the original query was
select customer_app_config_id, customer_app_config_name
from customer_app_config where customer_app_config_id in ( 5929, 11527) order by customer_app_config_id;

  Any other idea?

I hope that helps.


*/Arnau <[EMAIL PROTECTED]>/* wrote:

    Hi all,

    I have postgresql 7.4.2 running on debian and I have the oddest
    postgresql behaviour I've ever seen.

    I do the following queries:


    espsm_asme=# select customer_app_config_id, customer_app_config_name
    from customer_app_config where customer_app_config_id = 5929 or
    customer_app_config_id = 11527 order by customer_app_config_id;


    customer_app_config_id | customer_app_config_name
    ------------------------+--------------------------
    5929 | INFO
    (1 row)


    I do the same query but changing the order of the or conditions:


    espsm_asme=# select customer_app_config_id, customer_app_config_name
    from customer_app_config where customer_app_config_id = 11527 or
    customer_app_config_id = 5929 order by customer_app_config_id;


    customer_app_config_id | customer_app_config_name
    ------------------------+--------------------------
    11527 | MOVIDOSERENA TONI 5523
    (1 row)



    As you can see, the configuration 5929 and 11527 both exists, but
    when I do the queries they don't appear.

    Here below you have the execution plans. Those queries use an index,
    I have done reindex table customer_app_config but nothing has changed.

    espsm_asme=# explain analyze select customer_app_config_id,
    customer_app_config_name from customer_app_config where
    customer_app_config_id = 11527 or customer_app_config_id = 5929
    order by
    customer_app_config_id;

    QUERY PLAN

    
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Sort (cost=10.28..10.29 rows=2 width=28) (actual time=0.252..0.253
    rows=1 loops=1)
    Sort Key: customer_app_config_id
    -> Index Scan using pk_cag_customer_application_id,
    pk_cag_customer_application_id on customer_app_config (cost=0.00..10.27
    rows=2 width=28) (actual time=0.168..0.232 rows=1 loops=1)
    Index Cond: ((customer_app_config_id = 11527::numeric) OR
    (customer_app_config_id = 5929::numeric))
    Total runtime: 0.305 ms
    (5 rows)

    espsm_asme=# explain analyze select customer_app_config_id,
    customer_app_config_name from customer_app_config where
    customer_app_config_id = 5929 or customer_app_config_id = 11527
    order by
    customer_app_config_id;

    QUERY PLAN

    
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Sort (cost=10.28..10.29 rows=2 width=28) (actual time=0.063..0.064
    rows=1 loops=1)
    Sort Key: customer_app_config_id
    -> Index Scan using pk_cag_customer_application_id,
    pk_cag_customer_application_id on customer_app_config (cost=0.00..10.27
    rows=2 width=28) (actual time=0.034..0.053 rows=1 loops=1)
    Index Cond: ((customer_app_config_id = 5929::numeric) OR
    (customer_app_config_id = 11527::numeric))
    Total runtime: 0.114 ms
    (5 rows)

    The table definition is the following:

    espsm_asme=# \d customer_app_config
    Table "public.customer_app_config"
    Column | Type | Modifiers
    --------------------------+-----------------------+--------------------
    customer_app_config_id | numeric(10,0) | not null
    customer_app_config_name | character varying(32) | not null
    keyword | character varying(43) |
    application_id | numeric(10,0) | not null
    customer_id | numeric(10,0) | not null
    customer_app_contents_id | numeric(10,0) |
    number_access_id | numeric(10,0) |
    prefix | character varying(10) |
    separator | numeric(1,0) | default 0
    on_hold | numeric(1,0) | not null default 0
    with_toss | numeric(1,0) | not null default 0
    number_id | numeric(10,0) |
    param_separator_id | numeric(4,0) | default 1
    memory_timeout | integer |
    with_memory | numeric(1,0) | default 0
    session_enabled | numeric(1,0) | default 0
    session_timeout | integer |
    number | character varying(15) |
    Indexes:
    "pk_cag_customer_application_id" primary key, btree
    (customer_app_config_id)
    "un_cag_kwordnumber" unique, btree (keyword, number_id)
    "idx_cappconfig_ccontentsid" btree (customer_app_contents_id)
    "idx_cappconfig_cusidappid" btree (customer_id, application_id)
    "idx_cappconfig_customerid" btree (customer_id)
    "idx_cappconfig_onhold" btree (on_hold)
    "idx_cappconfig_onholdkeyw" btree (on_hold, keyword)
    Rules:

    A lot of rules that I don't paste as matter of length.


    Do you have any idea about how I can fix this?

-- Arnau

    ---------------------------(end of broadcast)---------------------------
    TIP 4: Have you searched our list archives?

    http://archives.postgresql.org


------------------------------------------------------------------------
Looking for earth-friendly autos?
Browse Top Cars by "Green Rating" <http://autos.yahoo.com/green_center/;_ylc=X3oDMTE4MGw4Z2hlBF9TAzk3MTA3MDc2BHNlYwNtYWlsdGFncwRzbGsDZ3JlZW5jZW50ZXI-> at Yahoo! Autos' Green Center.


--
Arnau

---------------------------(end of broadcast)---------------------------
TIP 7: You can help support the PostgreSQL project by donating at

               http://www.postgresql.org/about/donate

Reply via email to