Обсуждение: SQL Statements question, why I get errors...

Поиск
Список
Период
Сортировка

SQL Statements question, why I get errors...

От
Дата:
I work a software company and our software is run on databases..  We have
no problem using MS SQL, DB2, ect...  One of my customers wanted to try
and use POSTGRESQL..  He tried it and is having problems, so I downloaded
it and am running it on my Red Hat 7.3 box..  I am running version 7.3.2
of Postgresql..  I hope this is the right place to ask this..  When we
first launch our program we create several tables...  Here is an example
of one table we create:

create table test (f1 int, f2 char(30), f3 char(30), f4 char(30))
create unique index itest on test (f1 asc)

The first statement works fine..  However the second statement is when i
get this error:

Error: parser: parse error at or near "asc" at character 43

Does anyone know of how I can get the last statement to work with this
database????

Thanks...




Re: SQL Statements question, why I get errors...

От
Josh Berkus
Дата:
"Plist,"

> I work a software company and our software is run on databases..  We have
> no problem using MS SQL, DB2, ect...  One of my customers wanted to try
> and use POSTGRESQL..  He tried it and is having problems, so I downloaded
> it and am running it on my Red Hat 7.3 box..  I am running version 7.3.2
> of Postgresql..  I hope this is the right place to ask this..  When we
> first launch our program we create several tables...  Here is an example
> of one table we create:

You're in for a long, painful process if you think you can port a production
application to PostgreSQL (or between *any* two database platforms) without
an expert DBA.   Perhaps you should consider a consultant?

> create table test (f1 int, f2 char(30), f3 char(30), f4 char(30))
> create unique index itest on test (f1 asc)

Some databases (MSSQL) require seperate indexes for ascending (ASC) and
descending (DESC) sorts.  Postgresql does not; since 7.2.0, we have been able
to use the same index for both types of sorts.  As such, Postgresql does not
support the "ASC" syntax in index creation.  Simply change your statement to:

create unique index itest on test (f1);

... and it will work.

--
Josh Berkus
Aglio Database Solutions
San Francisco


Re: SQL Statements question, why I get errors...

От
Дата:
> "Plist,"
>
>> I work a software company and our software is run on databases..  We
>> have no problem using MS SQL, DB2, ect...  One of my customers wanted
>> to try and use POSTGRESQL..  He tried it and is having problems, so I
>> downloaded it and am running it on my Red Hat 7.3 box..  I am running
>> version 7.3.2 of Postgresql..  I hope this is the right place to ask
>> this..  When we first launch our program we create several tables...
>> Here is an example of one table we create:
>
> You're in for a long, painful process if you think you can port a
> production  application to PostgreSQL (or between *any* two database
> platforms) without  an expert DBA.   Perhaps you should consider a
> consultant?
>
>> create table test (f1 int, f2 char(30), f3 char(30), f4 char(30))
>> create unique index itest on test (f1 asc)
>
> Some databases (MSSQL) require seperate indexes for ascending (ASC) and
> descending (DESC) sorts.  Postgresql does not; since 7.2.0, we have been
> able  to use the same index for both types of sorts.  As such,
> Postgresql does not  support the "ASC" syntax in index creation.  Simply
> change your statement to:
>
> create unique index itest on test (f1);
>
> ... and it will work.
>
I have tried that and yes it did work..  Just don't know if I want to tell
my programmers to go in change all there code for postgresql...  Thanks
for the info..

Ron

> --
> Josh Berkus
> Aglio Database Solutions
> San Francisco





Re: SQL Statements question, why I get errors...

От
Bruno Wolff III
Дата:
On Sun, Feb 23, 2003 at 17:17:53 -0500, plist@horistjr.com wrote:
> I work a software company and our software is run on databases..  We have
> no problem using MS SQL, DB2, ect...  One of my customers wanted to try
> and use POSTGRESQL..  He tried it and is having problems, so I downloaded
> it and am running it on my Red Hat 7.3 box..  I am running version 7.3.2
> of Postgresql..  I hope this is the right place to ask this..  When we
> first launch our program we create several tables...  Here is an example
> of one table we create:
> 
> create table test (f1 int, f2 char(30), f3 char(30), f4 char(30))
> create unique index itest on test (f1 asc)
> 
> The first statement works fine..  However the second statement is when i
> get this error:
> 
> Error: parser: parse error at or near "asc" at character 43
> 
> Does anyone know of how I can get the last statement to work with this
> database????

Postgresql doesn't allow you to specify directions for indexes. So leave
the "asc" off. For an index on a single column it doesn't really matter
anyway (clustered tables might be an exception).

Currently multicolumn indexes all have to be in the same direction. If you
need one that has mixed directions, the current solution is to create a
new operator class that is backwards from normal and use that operator
class instead of the normal one in the index.