eEnd.date_last_modified'
> exec sp_bindefault Set_to_False, 'CloneEnd.is_obsolete'
All of the above is done through the table definition in Postges. The last
two functions simply set defaults for two columns.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
ms here and
people can help you with how to represent XML data relationally.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
ent value, such as a blank string or "N/A" or "000" to
represent "intentionally left blank".
Then you can set data2 NOT NULL and use a regular UNIQUE constraint.
BTW, you have defined your data columns as CHAR, not VARCHAR. You do know
that this i
erion.
Keeop in mind that depending on the rest of your data structure, there are
probably 8 different ways to approach this problem. I'd reccomend, in fact,
a quick reading of Pascal's "Practical Issues in Database Management" on
normalization to see the different
exist as well? Or not?
Question #2: Does your XML schema allow locall defined attributes? That is,
do some records have entire attributes ("fields" ) that other records do not?
Suggestion #1: Joe Celko's "SQL for Smarties, 2nd Ed." is an excellent book
for giving you i
a fixed-length string
(such as a required zip code) use CHAR; if it's variable but limited, use
varchar; if it's a long description, use TEXT.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TI
ing factor is "atomicity": ask yourself: "is this
array a discrete and undivisible unit, or is is a collection of related
but mutable elements?" If the former, use and array. If the latter,
use a sub-table.
Clearer now?
-Josh Berkus
---(end of broad
ch had adding and
> building tree's, but not moving. I'm hoping to find something
> postgresql specific but if not that's ok. Thanks in advance,
I've been planning on doing this as an article for a while. I'll send you an
answer off-list because I don't want to publi
use an index either ascending or
descending; it does not make a difference.
However, most of the time ORDER BY does not use an index at all because
a seq scan is faster. Usually, ORDER BY uses an index only when
combined with related criteria and/or the LIMIT clause.
-Josh Berkus
-
x27;t found?
Um, what's wrong with:
SELECT to_char(current_time, 'HH12:MI AM');
?
(See "Formatting Functions" under "Functions and Operators" in the
User's Guide)
-Josh Berkus
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/users-lounge/docs/faq.html
Beth,
Oh, and you should take this sort of question to the new performance list:
[EMAIL PROTECTED]
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
oin the PGSQL-PERFORMANCE mailing list and post this question
there:
[EMAIL PROTECTED]
message: "subscribe"
-Josh Berkus
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
in far more depth than I want to here;
2) Explore the tree module in /contrib in your Postgresql source.
I understand from Joe Conway that in 7.3, you will have another choice,
as Postgres will offer support for Oracle's tree-like "IS CONNECTED BY"
expression.
Good luck!
-Josh Berkus
P.
s possible that
your "ON DELETE CASCADE" trigger got wiped out somehow.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
Laurette,
> How is this possible? I've tried to reproduce this, but haven't been able
> to yet. This has happened to use several times.
Oh, forgot question 2:
SELECT version()?
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(
e indexes would be dropped as well.
-Josh Berkus
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
David,
I'm sorry, you just don't seem to be at the "self-help" stage. I
strongly reccommend that you hire a database consultant to help you.
-Josh Berkus
DAVID KUCHARSKI <[EMAIL PROTECTED]> wrote:
> the result set of the view is 3628 lines. It would be
>
g the Index for the online docs:
http://www.us.postgresql.org/users-lounge/docs/7.2/postgres/functions-subquery.html
Have fun.
-Josh
---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
ict if I tried to drop & re-create in the same transaction)
without a VACUUM. If you're using 7.1.3, you should upgrade for this
reason.
-Josh Berkus
---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
erface code):
"interval"(cast($term as varchar) || ' months')
This approach makes you do a little more work on the data entry end of
things, but speeds up querying considerably. Also, should your
company policy change in the future to permit contract terms in weeks
o
r(10) NOT NULL REFERENCES
phone_types(type)
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
Peter,
> Is it possible to create a view using tables from two different
> postgresql
> servers?
No.
-Josh Berkus
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/users-lounge/docs/faq.html
ng, that is not a cursor, even though it serves the same
purpose.
I'm pretty sure it's static, but it would be easy to test ... why don't you
give it a try?
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
e
> looking elsewhere than SQL to do this for me, such as php (this is for a
> web-based report)?
You cannot dynamically sum all columns through SQL. You would need to use a
procedural language to loop through the columns and create sum clauses for
each one.
--
-Josh Berkus
Aglio Databas
ably, the function and table spec is extremely dense; I'm
trying to set up a test case.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
x27;t ever see the extra records.
I just tried to set up a test case for this issue, based on much simpler
schema. Unfortunately, the bug is not reproduceable in this simple case.
Any suggestions on how to reproduce it without dumping you an enitre copy of
my *confidentia
uld
stick with your current schema and custom function.
-Josh Berkus
---(end of broadcast)---
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
Folks,
Sorry for cross-posting.
Somebody sent me a review of the German postgresql book to post at Techdocs.
I had a mail server accident, and lost the review and the e-mail address of
its writer.
Are you out there? Contact me, please.
--
-Josh Berkus
Aglio Database Solutions
San
of OODBMS in another couple of years. Who
knows, ANSI might codify OODB-UML as a standard, and then we'll have
something to build on. But until then ... the RDBMS model has been
around for 32 years, and the SQL standard for 20, and that a lot of
accumulated wisdom to throw away casually.
-Josh Berkus
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
> The application is written in Java, by the way.
You should store this data in a sub-table linked through a foriegn key.
Period. Messing with arrays will only lead you to heartache ...
Try the book "Database Design For Mere Mortals" for a primer on SQL DB design.
Vernon,
> Thanks Josh, I will take a look at this book.
>
> The only problem with the implemention I can see so far is
> performance: change format when read/write data. Other
> than that, I don't see a big problem. I, however, shall say the
> performance is importa
ed on a view:
http://www.us.postgresql.org/users-lounge/docs/7.2/postgres/rules.html
BTW, you can increase the number of parameters accepted by functions by
re-compiling postgres. Also, 7.3 will have 32 as the default.
-Josh Berkus
---(end of broadcast)---
Jim,
> Do any existing drivers / database version combinations support the
> isAutoIncrement method?
What programming language are you referring to? VB? Delphi?
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of bro
ROTECTED] You
are unlikely to get an answer on this list.
-Josh Berkus
---(end of broadcast)---
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
ver worked out a way around this minor problem.
-Josh
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly
Erwin,
> Thanks for your quick response Josh.
>
> I wasn't aware of the Postgresql-function DATEDIFF()
> The accolade ' is not a problem of course!
Whoops! Didn't want to confuse you. What I meant was, a PgSQL
function "Datediff" could be easily *writt
thought that I could do this through a MAX(boolean), but as it turns out,
MAX(boolean) has not been defined in the standard 7.2.3. distro. I could
define MAX(boolean), but I'm wondering if I'm missing something obvious.
--
-Josh Berkus
Aglio Database Solutions
San
d get added to the core? I
don't see any good reason not to have one.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
esting,
SELECT true = ANY ( SELECT boolcol FROM complex query )
Is marginlly faster than
SELECT max(boolcol) FROM complex query
With a custom MAX(boolean) function.
So I'll stick to ANY().
-Josh
__AGLIO DATABASE SOLUTIONS___
tive.
>
> I wonder if I can find a standalone java query analyzer package. Does
> anyone know?
I believe that Red Hat offers the query analyzer as a download. Check their
site.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---
.x
clusters.
===
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
T INTO "VisitorPointer839" ("VisitorID")
SELECT "VisitorID" FROM (
SELECT DISTINCT ON ("VisitorID") "VisitorID","Type"
FROM "ProgramEvent" WHERE "ProgramID" = 10
ORDER BY "VisitorID",&q
s of
ANSI SQL.
> And Just writing it out straight.
>
> insert into VisitorPointer839 ("VisitorID")
> select VisitorID
> from ProgramEvent
> Where ProgramID = 10
> and Type = 0
> group by VisitorID
This just gives him a list of all VisitorIDs with a Type = 0, most recent or
not.
> Thanks
> Chad "I wanna be Josh when i grow up" Thompson
Thanks. But heck, I'm only 32! I'm not grown up yet!
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
Of course,
it could be solved with a DAY/WEEK subtype, but I've already advocated for
that.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropria
t string. Potentially slower than #1, but easier to implement.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
have a list of about 14
interfaces.
When done, the article will go up at TechDocs or the Postgres Wiki
(currently under development).
-Josh
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
res lets you slack on this, but it would be worth trying
to see whether that has an effect on the problem.
Another thing to try is, instead of a simple variable assignment,
SELECT current_row INTO previous_row;
... and see if that works. I'll tinker later today; there has to be a
way
Robert,
> There are actually two sections on the techdocs site now relating to
> this at http://techdocs.postgresql.org/oresources.php
> look under the sections ERD Tools and Database Design
>
> Not that I'm not looking forward to your article Josh ;-)
Thanks. This gives me
Chris,
> FOR this_record IN
> EXECUTE ''SELECT ''
> || quote_ident($1)
> || ''FROM ''
> || quote_ident($2)
> LOOP
> list := list || '', '' || this_record.$1 ;
> END LOOP;
>
> As expected, accessing a field via this_record.$1
> does not work.
> Can it be done otherwise?
Functions has been addressed in 7.3. However, I
am not sure about permissions for updatable views. Tom, Bruce?
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unreg
maybe you have to use
> triggers rather than rules to do this?) Does that sound right?
I don't know. Can you test it?
-Josh
---(end of broadcast)---
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
th your configuration of Oracle import. See your
Oracle documentation; we cannot help you here.
-Josh Berkus
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
s in "SQL for Smarties". I will write
a PostgreSQL implementation in a later article.
-Josh Berkus
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/users-lounge/docs/faq.html
# where user_id = OLD.user_id;
See the online docs, under Server Programming, for how to use the RULES
system.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an
he view
4) A copy of your database session where your update is denied,
including the exact error message received.
Without that information, no futher help is available.
-Josh Berkus
---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
vailable. Production
> for us is next spring, so maybe we'll be okay on this one.
> This approach would certainly allow our development team to
> right their code one way.
7.3 final is expected before December.
--
-Josh Berkus
---(end of broa
Luis,
> There's any way to insert data inside the tables, using the
> functions, called by the rules, without giving direct access to the
> user ?
> I don't know, using a trigger or any kind of structure !!??
Not until 7.3. Which is due out soon ... a couple of weeks,
Pedro,
> I´m looking for the name of the table that contains all databases in my
system. I already see this in the postgre manual, but i´m forgot where
pg_database
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadc
Jean-Luc,
> While we are on the subject,
> is there any ERD of the system's table somewhere?
Don't know ... but the system tables are about to change in 7.3.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
someone else will respond to your message as well. I'll
re-phrase one of your questions for the Hackers list:
QUESTION: Is there any way we could distinguish between literals and
column references when processing operators? That is, while we would
*not* want to implicitly convert a
r database to file. Backup. Edit the file.
Re-create and re-load the database.
-Josh Berkus
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
on lotti (cost=0.00..2.26 rows=1
> width=98)
>
> Why index is not used for operators > and <
Because ">" is returning 26,000 rows. When you return that many rows,
a Seq Scan is faster.
-Josh
---(end of broadcast)---
tgreSQL 7.3, as a /contrib module, by Joe Conway.
Download 7.3b5 now if you can't wait; Joe would like more people to
test his module, anyway.
-Josh Berkus
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
ent, open ridicule, most welcome. thanks.
This is a fine implementation using the adjacency list model of tree
design. However, I think you may find that the string-based tree
implementation in /contrib/ltree is more suited to your purposes, and
easier to maintain.
-Josh Berkus
--
the screen.
Can you break down, in more detail, what you're *trying* to do? It
can probably be done, but I'm still not clear on what you're
attempting.
-Josh Berkus
---(end of broadcast)---
TIP 2: you can get off all lists at once
return values to
the calling interface.
Now, what you could do is replace the whole insert with a function, doing:
SELECT add_cust( name, address, phone, credit_card);
Which does the inserting and returns the new id to the client.This is a
solution I frequently use in my web apps.
-Josh Be
le to hold the pathnames should cure your
"cascading trigger" problem.
-Josh Berkus
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
x27;d want to use Triggers or Constraints
etc.
There are, IMHO, some things Rules are better for, and some things Triggers
are better for. I tend to use all Triggers except for updatable views,
simply because using a mix of Rules and Triggers can be very hard to keep
track of, but YMMV.
--
h a table
check on
> > the new data impractical, so you'd want to use Triggers or Constraints
>
> We have changed ordering in 7.3 where I think INSERT rules are _after_
> the insert.
How would that work? What if I want to reject the insert?
--
-Josh Berkus
Aglio Database S
ion
if necessary, otherwise inserts. It's tricky, but probably the best way to
get trigger + rule functionality at once.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 3: if posting/reading through U
Ian,
You're welcome. Replying to the list for the edification of other users.
-Josh
> I just figgered it out. I declared the function as
>
> create function some_func(test) returns int ...
>
> where test is the name of a table. The values are passed as a tcl array. I
n 7.4 devel by accident.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get
se post your table definitions as SQL statements.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
W. You're also missing the parts
of a PLPGSQL procedure. What you want is:
create function pr_tr_i_nodes() returns opaque
> as '
DECLARE v_ancestor INT;
BEGIN
SELECT ancestor_id INTO v_ancestor
FROM ancestors WHERE ancestors.node_id = NEW.parent_id;
INSERT INTO ancestors
VALUES ( NEW.no
atement is a much better than a RAISE EXCEPTION
> statement?
Not that I have encountered, but YMMV.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregi
; from the aforementioned
> SELECT, leaving the non-coincident dates in blank and filling the rain data
> of the coincident dates. Is this possible? How?
I don't think this is the best method to find missing dates. However, I'm a
little confused as to what you consider a "mis
y pointers in this direction will be of great help.
1) http://techdocs.postgresql.org
2) O'Reilly's "SQL In a Nutshell" (over a year old, but better than
nothing)
-Josh
---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
n logic
before calling any of the inserts.
-Josh
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
#x27;ve found pgAdminII to be sluggish on
a large, busy network because MS-ODBC is quite vulnerable to traffic
conflicts. And phpPgAdmin, at least several versions ago, had a
tendency to issue a seperate query for each single bit of information,
mySQL-style (they may have fixed
ditionally validate the value.
Based on the information on this table, you can write a custom function
which formats each attribute as it comes out of the table based on the
reference table.
Hope that helps, half-elf!
-Josh
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
Dave,
A trigger function does not take variable parameters, gets its data
from the NEW or OLD records, and returns OPAQUE with the RETURN NEW
statement.
Please check out the documentation on writing PL/pgSQL triggers under
Procedural Languages in the online docs.
-Josh Berkus
procedural logic for a dynamic set of
parameters. However, the above is set up for numeric values (i.e. one
multiplies the grid number by the value to add into calculations) and
will not work for your varchar-returning query.
You could, however, constuct the grid with NULLs and '' str
Richard,
> I'm confused. How do I get the integer 10102 to come in as the date
> 2002-01-01?
Hmmm ... isn't this an old post, repeating?
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP
r by user_login.last_login desc;
Use a "WHERE EXISTS" clause instead of "IN".
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
difference btw. IN and EXISTS is in the
PostgreSQL FAQ on the web site.
-Josh
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/users-lounge/docs/faq.html
database, and if it's a low-budget project
destined to be thrown away in 3 months, then go for it. If, however,
you expect this database to be around for a while, you owe it to
yourself and your co-workers to design it right.
If you want an education on database normalization, pi
E FUNCTION to_year (timestamp) RETURNS varchar AS
'SELECT to_char($1, '''');'
LANGUAGE 'sql' WITH (ISCACHABLE, ISSTRICT)
(above is 7.2.3 syntax)
Then use the to_year function in place of to_char for creating your
index.
-Josh Berkus
-
;' || $2
END
' LANGUAGE 'sql';
--create aggregate with html between items
CREATE AGGREGATE br_list ( BASETYPE = text, SFUNC = br_cat, STYPE = text,
INITCOND = '' );
--create aggregate with commas between items
CREATE AGGREGATE comma_list ( BASETYPE = text, SFUNC = comma_cat, STYPE =
text,
INITCOND = '' );
-Josh Berkus
---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
HERE NOT (co_id=1 OR co_id=2 OR co_id=null OR co_id=3...)
> WHERE NOT (... OR null OR ...)
> WHERE NOT (null)
> WHERE null
I'd suggest that you do not want to give readers an example that contains NOT
IN (subselect). There are almost no cricumstances under
after the "Database Design
> For Mere Mortals". I will read the book.
That's a great book, too. Don't start on Pascal until *after* you
have finished "database design".
-Josh Berkus
---(end of broadcast)-
> I waited for the book from the local library for more than a month, but only
took me less than a hour to scan over the
> whole book and grip the multivalued table design idea.
Hmmm. I'll need to look at it again. If he's suggesting that it's a good
idea to put a delimite
nd
additionally allow for the promotion of "peripheral" docs to the core easily.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subsc
Wei,
> I want to select some data out of database A, and insert them into database
B. Is it possible to do in one SQL query?
>
No. Use a Perl script.
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
t confused by your question. Could you try explaining it another way,
possibly with SQL code examples?
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
, you would have to
set a tuple lock with something longer lasting than select for update, and
arrange to drop it if the connection dies. but it's still my preferred
solution)
--
-Josh Berkus
Aglio Database Solutions
San Francisco
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster
in an aggregate function. Should a
> change be made to the error text?
Nope. The error message is exactly correct. If you didn't want to GROUP BY
jobno, then what you actually wanted to query was:
SELECT count(jobno) FROM drawing_register;
--
-Josh Berkus
Aglio D
Moritz,
There is a performance mailing list at:
[EMAIL PROTECTED]
--Josh
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/users-lounge/docs/faq.html
Moritz,
> I'm sorry, I didn't realize this, it is certainly closer to what I
> need.
> Next time I'll look better (google brought up references to this
> list, so
> I subscribed here).
Hey, there are 18 active lists now ... we don't expect anyone to get
the
David,
> Are there functions for adding and subtracting this type from itself?
> Or is there a simple way to do it?
The MONEY type is depreciated, and should have been removed from the Postgres
source but was missed as an oversight. Use NUMERIC instead.
--
-Josh Berkus
Aglio Da
eSQL 7.0.3 and I have only problem with this type query.
Are you using 7.0.3 now, or something more current? I can't really
help you much with 7.0.3.
-Josh
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
501 - 600 of 864 matches
Mail list logo