FAQ
SQL*Plus: Release 11.2.0.2.0 Production on Tue Nov 2 19:09:25 2010

Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
create table table1 (code int,Org int,Descr varchar(20));
Table created.
create table table2 (per_code int,Name varchar(20));
Table created.
insert into table1 values (1,100,'Rec1');
1 row created.
insert into table1 values (2,200,'Rec2');
1 row created.
insert into table1 values (3,300,'Rec3');
1 row created.
insert into table2 values (1,'TestRec1');
1 row created.
insert into table2 values (2,'TestRec2');
1 row created.
update table1 set Org=0 where code in (select code from table2);
3 rows updated.
select * from table1;
CODE ORG DESCR

---------- ---------- --------------------
1 0 Rec1
2 0 Rec2
3 0 Rec3

>

Not able to duplicate.

Can you show spool output and version or database?

From: oracle-l-bounce_at_freelists.org [oracle-l-bounce_at_freelists.org] On Behalf Of Jack van Zanen [jack_at_vanzanen.com]
Sent: Tuesday, November 02, 2010 6:10 PM
To: oracle-l@freelists.org
Subject: Update not behaving as hoped

Hi All,

Oracle 11 / Sql Server (same behaviour)

My wife encountered following issue on sql server and asked me to check if oracle was "smarter". It seems to not be.

Test case:

create

table table1
(code int,Org int,Descr varchar(20));

create

table table2
(per_code int,Name varchar(20));

insert

into table1 values (1,100,'Rec1');

insert

into table1 values (2,200,'Rec2');

insert

into table1 values (3,300,'Rec3');

insert

into table2 values (1,'TestRec1');

insert

into table2 values (2,'TestRec2');

update

table1
set Org=0
where code in (select code from table2); --There is a syntax error "invalid identifier" in the subselect but there is no error when running this update.

select

from table1; --Not only was there no error but it updated the entire table.

This is probably "normal" behaviour since both oracle and sql server do it but I would have hoped that a syntax error would result in an error no matter where it happens. Can anybody explain the technical reason why this would be happening.

Jack

Search Discussions

  • Jack van Zanen at Nov 3, 2010 at 2:35 am
    try running the subselect on it's own

    table2 has NO column named code.

    Jack van Zanen

    This e-mail and any attachments may contain confidential material for the
    sole use of the intended recipient. If you are not the intended recipient,
    please be aware that any disclosure, copying, distribution or use of this
    e-mail or any attachment is prohibited. If you have received this e-mail in
    error, please contact the sender and delete all copies.
    Thank you for your cooperation
    On Wed, Nov 3, 2010 at 12:49 PM, Mindaugas Navickas wrote:

    Jack,

    I might not be as "smart" as Oracle and SQL servers together, but I can not
    see that syntax error as you see it. To it looks "normal" that sub-select
    has some columns from outer statement - for example - would you consider
    this update "normal":


    update table1
    set Org=0
    where exists (select 1 from table2 where code=per_code);



    As well as this (which would be equivelent to one that you have send)


    update table1
    set Org=0
    where exists (select 1 from table2 where code=code);


    Regards
    Mike Navickas
    Oracle&DB2 DBA



    ------------------------------
    *From:* Jack van Zanen
    *To:* oracle-l@freelists.org
    *Sent:* Tue, November 2, 2010 9:10:40 PM
    *Subject:* Update not behaving as hoped

    Hi All,


    Oracle 11 / Sql Server (same behaviour)

    My wife encountered following issue on sql server and asked me to check if
    oracle was "smarter". It seems to not be.


    Test case:



    create
    table table1
    (code int,Org int,Descr varchar(20));

    create
    table table2
    (per_code int,Name varchar(20));

    insert
    into table1 values (1,100,'Rec1');

    insert
    into table1 values (2,200,'Rec2');

    insert
    into table1 values (3,300,'Rec3');

    insert
    into table2 values (1,'TestRec1');

    insert
    into table2 values (2,'TestRec2');

    update
    table1
    set Org=0
    where code in (select code from table2); --There is a syntax error
    "invalid identifier" in the subselect but there is no error when running
    this update.

    select
    * from table1; --Not only was there no error but it updated the entire
    table.


    This is probably "normal" behaviour since both oracle and sql server do it
    but I would have hoped that a syntax error would result in an error no
    matter where it happens. Can anybody explain the technical reason why this
    would be happening.

    Jack
    --
    http://www.freelists.org/webpage/oracle-l
  • Mindaugas Navickas at Nov 3, 2010 at 2:50 am
    Jack,

    Please google on "correlated subquery" and I am sure that you will find answers
    that you are looking for.

    Regards
    Mike Navickas
    Oracle&DB2 DBA

    ________________________________
    From: Jack van Zanen
    To: Mindaugas Navickas
    Cc: oracle-l_at_freelists.org
    Sent: Tue, November 2, 2010 10:35:06 PM
    Subject: Re: Update not behaving as hoped

    try running the subselect on it's own

    table2 has NO column named code.

    Jack van Zanen

    -------------------------
    This e-mail and any attachments may contain confidential material for the sole
    use of the intended recipient. If you are not the intended recipient, please be
    aware that any disclosure, copying, distribution or use of this e-mail or any
    attachment is prohibited. If you have received this e-mail in error, please
    contact the sender and delete all copies.
    Thank you for your cooperation

    On Wed, Nov 3, 2010 at 12:49 PM, Mindaugas Navickas wrote:

    Jack,
    I might not be as "smart" as Oracle and SQL servers together, but I can not see
    that syntax error as you see it. To it looks "normal" that sub-select has some
    columns from outer statement - for example - would you consider this update
    "normal":

    update table1
    setOrg=0
    whereexists(select 1 fromtable2 where code=per_code);

    As well as this (which would be equivelent to one that you have send)

    update table1
    setOrg=0
    where exists(select 1 fromtable2 where code=code);


    Regards
    Mike Navickas
    Oracle&DB2 DBA



    ________________________________
    From: Jack van Zanen
    To: oracle-l_at_freelists.org
    Sent: Tue, November 2, 2010 9:10:40 PM
    Subject: Update not behaving as hoped



    Hi All,


    Oracle 11 / Sql Server (same behaviour)

    My wife encountered following issue on sql server and asked me to check if
    oracle was "smarter". It seems to not be.


    Test case:

    createtabletable1
    (code int,Org int,Descr varchar(20));createtabletable2
    (per_code int,Namevarchar(20));insertintotable1 values
    (1,100,'Rec1');insertintotable1 values (2,200,'Rec2');insertintotable1 values
    (3,300,'Rec3');insertintotable2 values(1,'TestRec1');insertintotable2
    values(2,'TestRec2');updatetable1

    setOrg=0
    wherecode in(selectcode fromtable2);  --There is a syntax error "invalid
    identifier" in the subselect but there is no error when running this
    update.select*fromtable1; --Not only was there no error but it updated the
    entire table.

    This is probably "normal" behaviour since both oracle and sql server do it but I
    would have hoped that a syntax error would result in an error no matter where it
    happens.  Can anybody explain the technical reason why this would be happening.

    Jack
    --
    http://www.freelists.org/webpage/oracle-l
  • Jack van Zanen at Nov 3, 2010 at 3:06 am
    This query is not a correlated subquery, nor is it intended to be.

    I just wish to update table1 for which the code exists in the per_code field
    in table2. As per below query which does exactly that.

    update
    table1
    set Org=0
    where code in (select per_code from table2);

    Jack van Zanen

    This e-mail and any attachments may contain confidential material for the
    sole use of the intended recipient. If you are not the intended recipient,
    please be aware that any disclosure, copying, distribution or use of this
    e-mail or any attachment is prohibited. If you have received this e-mail in
    error, please contact the sender and delete all copies.
    Thank you for your cooperation
    On Wed, Nov 3, 2010 at 1:50 PM, Mindaugas Navickas wrote:

    Jack,

    Please google on "correlated subquery" and I am sure that you will find
    answers that you are looking for.
    Regards
    Mike Navickas
    Oracle&DB2 DBA

    ------------------------------
    *From:* Jack van Zanen
    *To:* Mindaugas Navickas
    *Cc:* oracle-l@freelists.org
    *Sent:* Tue, November 2, 2010 10:35:06 PM
    *Subject:* Re: Update not behaving as hoped

    try running the subselect on it's own

    table2 has NO column named code.


    Jack van Zanen

    -------------------------
    This e-mail and any attachments may contain confidential material for the
    sole use of the intended recipient. If you are not the intended recipient,
    please be aware that any disclosure, copying, distribution or use of this
    e-mail or any attachment is prohibited. If you have received this e-mail in
    error, please contact the sender and delete all copies.
    Thank you for your cooperation

    On Wed, Nov 3, 2010 at 12:49 PM, Mindaugas Navickas wrote:

    Jack,

    I might not be as "smart" as Oracle and SQL servers together, but I can
    not see that syntax error as you see it. To it looks "normal" that
    sub-select has some columns from outer statement - for example - would you
    consider this update "normal":


    update table1
    set Org=0
    where exists (select 1 from table2 where code=per_code);



    As well as this (which would be equivelent to one that you have send)


    update table1
    set Org=0
    where exists (select 1 from table2 where code=code);


    Regards
    Mike Navickas
    Oracle&DB2 DBA



    ------------------------------
    *From:* Jack van Zanen
    *To:* oracle-l@freelists.org
    *Sent:* Tue, November 2, 2010 9:10:40 PM
    *Subject:* Update not behaving as hoped

    Hi All,


    Oracle 11 / Sql Server (same behaviour)

    My wife encountered following issue on sql server and asked me to check if
    oracle was "smarter". It seems to not be.


    Test case:



    create
    table table1
    (code int,Org int,Descr varchar(20));

    create
    table table2
    (per_code int,Name varchar(20));

    insert
    into table1 values (1,100,'Rec1');

    insert
    into table1 values (2,200,'Rec2');

    insert
    into table1 values (3,300,'Rec3');

    insert
    into table2 values (1,'TestRec1');

    insert
    into table2 values (2,'TestRec2');

    update
    table1
    set Org=0
    where code in (select code from table2); --There is a syntax error
    "invalid identifier" in the subselect but there is no error when running
    this update.

    select
    * from table1; --Not only was there no error but it updated the entire
    table.


    This is probably "normal" behaviour since both oracle and sql server do it
    but I would have hoped that a syntax error would result in an error no
    matter where it happens. Can anybody explain the technical reason why this
    would be happening.

    Jack
    --
    http://www.freelists.org/webpage/oracle-l
  • Michael Dinh at Nov 3, 2010 at 3:18 am
    DUH!

    I remember we had something like this. Oracle actually rewrites the SQL.

    Since code is a valid column in the outer table, Oracle made the assumptions.

    If you put in column that does not exist in either tables, then you should get error.

    IF you alias the table, then it would fail as well, as mentioned in thread earlier.
    update table1 set Org=0 where code in (select code from table2);
    3 rows updated.

    Execution Plan

    Plan hash value: 1937641525
    Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    0 | UPDATE STATEMENT | | 1 | 26 | 334 (0)| 00:41:06 |
    1 | UPDATE | TABLE1 | | | | |
    * 2 | FILTER | | | | | |
    3 | TABLE ACCESS FULL | TABLE1 | 3 | 78 | 167 (0)| 00:20:33 |
    * 4 | FILTER | | | | | |
    5 | TABLE ACCESS FULL| TABLE2 | 2 | | 167 (0)| 00:20:33 |
    -------------------------------------------------------------------------------

    Predicate Information (identified by operation id):

    2 - filter( EXISTS (SELECT 0 FROM "TABLE2" "TABLE2" WHERE :B1=:B2))
    4 - filter(:B1=:B2)

    Note

    dynamic sampling used for this statement (level=2)

    Statistics

    9 recursive calls
    3 db block gets
    119 consistent gets
    0 physical reads
    872 redo size
    838 bytes sent via SQL*Net to client
    814 bytes received via SQL*Net from client
    3 SQL*Net roundtrips to/from client
    1 sorts (memory)
    0 sorts (disk)
    3 rows processed

    ________________________________________

    From: oracle-l-bounce_at_freelists.org [oracle-l-bounce_at_freelists.org] On Behalf Of Jack van Zanen [jack_at_vanzanen.com]
    Sent: Tuesday, November 02, 2010 8:06 PM
    To: Mindaugas Navickas
    Cc: oracle-l@freelists.org
    Subject: Re: Update not behaving as hoped

    This query is not a correlated subquery, nor is it intended to be.

    I just wish to update table1 for which the code exists in the per_code field in table2. As per below query which does exactly that.

    update
    table1
    set Org=0
    where code in (select per_code from table2);

    Jack van Zanen

    This e-mail and any attachments may contain confidential material for the sole use of the intended recipient. If you are not the intended recipient, please be aware that any disclosure, copying, distribution or use of this e-mail or any attachment is prohibited. If you have received this e-mail in error, please contact the sender and delete all copies.
    Thank you for your cooperation

    On Wed, Nov 3, 2010 at 1:50 PM, Mindaugas Navickas > wrote:
    Jack,

    Please google on "correlated subquery" and I am sure that you will find answers that you are looking for.
    Regards
    Mike Navickas
    Oracle&DB2 DBA

    From: Jack van Zanen >
    To: Mindaugas Navickas >
    Cc: oracle-l@freelists.org
    Sent: Tue, November 2, 2010 10:35:06 PM
    Subject: Re: Update not behaving as hoped

    try running the subselect on it's own

    table2 has NO column named code.

    Jack van Zanen

    This e-mail and any attachments may contain confidential material for the sole use of the intended recipient. If you are not the intended recipient, please be aware that any disclosure, copying, distribution or use of this e-mail or any attachment is prohibited. If you have received this e-mail in error, please contact the sender and delete all copies.
    Thank you for your cooperation

    On Wed, Nov 3, 2010 at 12:49 PM, Mindaugas Navickas > wrote:
    Jack,

    I might not be as "smart" as Oracle and SQL servers together, but I can not see that syntax error as you see it. To it looks "normal" that sub-select has some columns from outer statement - for example - would you consider this update "normal":

    update table1
    set Org=0
    where exists (select 1 from table2 where code=per_code);

    As well as this (which would be equivelent to one that you have send)

    update table1
    set Org=0
    where exists (select 1 from table2 where code=code);

    Regards
    Mike Navickas
    Oracle&DB2 DBA

    From: Jack van Zanen >
    To: oracle-l@freelists.org
    Sent: Tue, November 2, 2010 9:10:40 PM
    Subject: Update not behaving as hoped

    Hi All,

    Oracle 11 / Sql Server (same behaviour)

    My wife encountered following issue on sql server and asked me to check if oracle was "smarter". It seems to not be.

    Test case:

    create

    table table1
    (code int,Org int,Descr varchar(20));

    create

    table table2
    (per_code int,Name varchar(20));

    insert

    into table1 values (1,100,'Rec1');

    insert

    into table1 values (2,200,'Rec2');

    insert

    into table1 values (3,300,'Rec3');

    insert

    into table2 values (1,'TestRec1');

    insert

    into table2 values (2,'TestRec2');

    update

    table1
    set Org=0
    where code in (select code from table2); --There is a syntax error "invalid identifier" in the subselect but there is no error when running this update.

    select

    from table1; --Not only was there no error but it updated the entire table.

    This is probably "normal" behaviour since both oracle and sql server do it but I would have hoped that a syntax error would result in an error no matter where it happens. Can anybody explain the technical reason why this would be happening.

    Jack
  • Wolfgang Breitling at Nov 3, 2010 at 3:55 am
    Since you did not qualify "code" in the subselect

    update
    table1
    set Org=0
    where code in (select code from table2);

    and code does not exist in table2 it refers back to field code in
    table1. Thus your where clause becomes true for every row. The query
    is syntactically correct and executes correctly. It is your
    "translation" of your intend into sql that is in error. This mistake
    underscores the importance to qualify all columns used in a sql. As a
    principle, not only to avoid ambiguities.

    This sql

    update table1 t1
    set Org=0
    where t1.code in (select t2.code from table2 t2);

    DOES raise the error you expect.
    At 09:06 PM 11/2/2010, you wrote:
    This query is not a correlated subquery, nor is it intended to be.

    I just wish to update table1 for which the code exists in the
    per_code field in table2. As per below query which does exactly that.

    update
    table1
    set Org=0
    where code in (select per_code from table2);
    Regards

    Wolfgang Breitling
    Centrex Consulting Corporation
    http://www.centrexcc.com
  • Jack van Zanen at Nov 3, 2010 at 2:36 am
    That is exactly what I see, however the subselect on it's own is invalid
    sql. As a result it updated the entire table -- not what I expected.

    Jack van Zanen

    This e-mail and any attachments may contain confidential material for the
    sole use of the intended recipient. If you are not the intended recipient,
    please be aware that any disclosure, copying, distribution or use of this
    e-mail or any attachment is prohibited. If you have received this e-mail in
    error, please contact the sender and delete all copies.
    Thank you for your cooperation
    On Wed, Nov 3, 2010 at 1:12 PM, Michael Dinh wrote:

    SQL*Plus: Release 11.2.0.2.0 Production on Tue Nov 2 19:09:25 2010

    Copyright (c) 1982, 2010, Oracle. All rights reserved.


    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit
    Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing
    options
    create table table1 (code int,Org int,Descr varchar(20));
    Table created.
    create table table2 (per_code int,Name varchar(20));
    Table created.
    insert into table1 values (1,100,'Rec1');
    1 row created.
    insert into table1 values (2,200,'Rec2');
    1 row created.
    insert into table1 values (3,300,'Rec3');
    1 row created.
    insert into table2 values (1,'TestRec1');
    1 row created.
    insert into table2 values (2,'TestRec2');
    1 row created.
    update table1 set Org=0 where code in (select code from table2);
    3 rows updated.
    select * from table1;
    CODE ORG DESCR
    ---------- ---------- --------------------
    1 0 Rec1
    2 0 Rec2
    3 0 Rec3
    Not able to duplicate.

    Can you show spool output and version or database?
    ________________________________________
    From: oracle-l-bounce_at_freelists.org [oracle-l-bounce_at_freelists.org] On
    Behalf Of Jack van Zanen [jack_at_vanzanen.com]
    Sent: Tuesday, November 02, 2010 6:10 PM
    To: oracle-l@freelists.org
    Subject: Update not behaving as hoped

    Hi All,


    Oracle 11 / Sql Server (same behaviour)

    My wife encountered following issue on sql server and asked me to check if
    oracle was "smarter". It seems to not be.


    Test case:



    create

    table table1
    (code int,Org int,Descr varchar(20));

    create

    table table2
    (per_code int,Name varchar(20));

    insert

    into table1 values (1,100,'Rec1');

    insert

    into table1 values (2,200,'Rec2');

    insert

    into table1 values (3,300,'Rec3');

    insert

    into table2 values (1,'TestRec1');

    insert

    into table2 values (2,'TestRec2');

    update

    table1
    set Org=0
    where code in (select code from table2); --There is a syntax error
    "invalid identifier" in the subselect but there is no error when running
    this update.

    select

    * from table1; --Not only was there no error but it updated the entire
    table.


    This is probably "normal" behaviour since both oracle and sql server do it
    but I would have hoped that a syntax error would result in an error no
    matter where it happens. Can anybody explain the technical reason why this
    would be happening.

    Jack
    --
    http://www.freelists.org/webpage/oracle-l
  • Anonymous at Nov 3, 2010 at 2:40 am
    HI,

    you should use alias. otherwise it update all record in table1;

    update table1 t
    set t.Org=0
    where t.code in (select x.code from table2 x); --it will raise syntax error

    Lei Liu (sundog315)
    2010-11-03

    发件人:Jack van Zanen
    发送日期:2010-11-03 09:12:16
    收件人:oracle-l
    抄送:
    主题:Update not behaving as hoped

    Hi All,

    Oracle 11 / Sql Server (same behaviour)

    My wife encountered following issue on sql server and asked me to check if
    oracle was "smarter". It seems to not be.

    Test case:

    create table table1
    (code int,Org int,Descr varchar(20));

    create table table2
    (per_code int,Name varchar(20));

    insert into table1 values (1,100,'Rec1');

    insert into table1 values (2,200,'Rec2');

    insert into table1 values (3,300,'Rec3');

    insert into table2 values (1,'TestRec1');

    insert into table2 values (2,'TestRec2');

    update table1
    set Org=0
    where code in (select code from table2); --There is a syntax error "invalid
    identifier" in the subselect but there is no error when running this update.

    select * from table1; --Not only was there no error but it updated the
    entire table.

    This is probably "normal" behaviour since both oracle and sql server do it
    but I would have hoped that a syntax error would result in an error no
    matter where it happens. Can anybody explain the technical reason why this
    would be happening.

    Jack
    †Ûiÿü0ÁúÞzX¬¶Ê+ƒün– {ú+iÉ^
  • Dbvision_at_iinet.net.au at Nov 3, 2010 at 4:07 am
    Hi Jack.

    The sql you wrote first is valid. It is perfectly legal to reference a column
    from an outside table (table1) in a sub-select (table2). Hence no syntax error.

    The "code" column will simply be replaced by whatever value is currently in the
    outer select (table1), as if it were a constant.

    All you are doing is confirming that "code" in the left side of the predicate is
    equal to "code" in the right side, selected as many times as there are rows in
    table2. Hence the update to all rows.

    When you pull the statement out of the sub-select, you get an error: you are not
    implicitly referencing an outer query column anymore, you're simply using an
    invalid column name - the context of execution of a sub-select is not the same as
    as single select, otherwise correlated sub-queries would never be possible.

    If you coded with an explicit table alias, this would come back as an error in
    the original:

    update table1
    set table1.org=0
    where table1.code in (select table2.code from table2)

    The fact it doesn't means Oracle - and MSSQL - are taking a default that is not
    what you expected. But it's not illegal SQL.

    Cheers
    Nuno Souto
    in sunny Sydney, Australia

    On Wed Nov 3 11:06, Jack van Zanen sent:
    This query is not a correlated subquery, nor is it intended to be.

    I just wish to update table1 for which the code exists in the per_code field in
    table2. As per below query which does exactly that.
    update
    table1
    set Org=0
    where code in (select per_code from table2);
    updatetable1
    set Org=0

    where code in (select code from table2);
    --
    http://www.freelists.org/webpage/oracle-l
  • Jack van Zanen at Nov 3, 2010 at 4:31 am
    Thanks for all the replies.

    lessons learned

    Jack van Zanen

    This e-mail and any attachments may contain confidential material for the
    sole use of the intended recipient. If you are not the intended recipient,
    please be aware that any disclosure, copying, distribution or use of this
    e-mail or any attachment is prohibited. If you have received this e-mail in
    error, please contact the sender and delete all copies.
    Thank you for your cooperation
    On Wed, Nov 3, 2010 at 3:07 PM, dbvision_at_iinet.net.au wrote:

    Hi Jack.

    The sql you wrote first is valid. It is perfectly legal to reference a
    column
    from an outside table (table1) in a sub-select (table2). Hence no syntax
    error.

    The "code" column will simply be replaced by whatever value is currently in
    the
    outer select (table1), as if it were a constant.

    All you are doing is confirming that "code" in the left side of the
    predicate is
    equal to "code" in the right side, selected as many times as there are rows
    in
    table2. Hence the update to all rows.

    When you pull the statement out of the sub-select, you get an error: you
    are not
    implicitly referencing an outer query column anymore, you're simply using
    an
    invalid column name - the context of execution of a sub-select is not the
    same as
    as single select, otherwise correlated sub-queries would never be possible.

    If you coded with an explicit table alias, this would come back as an error
    in
    the original:

    update table1
    set table1.org=0
    where table1.code in (select table2.code from table2)

    The fact it doesn't means Oracle - and MSSQL - are taking a default that is
    not
    what you expected. But it's not illegal SQL.

    Cheers
    Nuno Souto
    in sunny Sydney, Australia

    On Wed Nov 3 11:06, Jack van Zanen sent:
    This query is not a correlated subquery, nor is it intended to be.

    I just wish to update table1 for which the code exists in the per_code
    field in
    table2. As per below query which does exactly that.
    update
    table1
    set Org=0
    where code in (select per_code from table2);
    updatetable1
    set Org=0

    where code in (select code from table2);

    --
    http://www.freelists.org/webpage/oracle-l

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouporacle-l @
categoriesoracle
postedNov 3, '10 at 2:12a
activeNov 3, '10 at 4:31a
posts10
users6
websiteoracle.com

People

Translate

site design / logo © 2022 Grokbase