Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тип point / 15 сообщений из 15, страница 1 из 1
28.01.2014, 15:45:05
    #38540689
letete
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
пишу:
Код: plaintext
1.
2.
3.
4.
CREATE TABLE "AMSETS" (
            "uid" serial NOT NULL, 
            "inside" boolean NOT NULL DEFAULT false, 
            "threshold" point NOT NULL DEFAULT (-0.1, 0.1), 
            "sigma" real NOT NULL DEFAULT 3.0)

ОШИБКА: колонка "threshold" имеет тип point, но тип выражения по умолчанию record

что не так? и что за тип такой, record?
...
Рейтинг: 0 / 0
28.01.2014, 15:53:30
    #38540711
letete
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
а еще в чем разница между
Код: plaintext
CREATE TABLE "AMSETS"
и
Код: plaintext
CREATE TABLE AMSETS
?
...
Рейтинг: 0 / 0
28.01.2014, 16:26:44
    #38540779
Dim666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
leteteа еще в чем разница между
Код: plaintext
CREATE TABLE "AMSETS"
и
Код: plaintext
CREATE TABLE AMSETS
?Лексемы без кавычек постгрес приводит к нижнему регистру. Т.е. сможете писать "select * from AMSETS", "select * from AmSETs", "select * from amsets".
А если написали в кавычках, то в будущем так и придётся обращаться.
...
Рейтинг: 0 / 0
28.01.2014, 16:35:25
    #38540803
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE "AMSETS" (
            "uid" serial NOT NULL, 
            "inside" boolean NOT NULL DEFAULT false, 
            "threshold" point NOT NULL DEFAULT point '(-0.1, 0.1)', -- << см. тут
            "sigma" real NOT NULL DEFAULT 3.0)
...
Рейтинг: 0 / 0
28.01.2014, 16:39:34
    #38540817
ARTURV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
leteteа еще в чем разница между
Код: plaintext
CREATE TABLE "AMSETS"
и
Код: plaintext
CREATE TABLE AMSETS
?
Postgres по умолчанию создает имена маленькими буквами, то есть во втором случае таблица будет иметь имя amsets
Если нужно обязательно использовать заглавные буквы (большие), то надо заключать в кавычки. Но тогда это надо делать во всех запросах, что очень неудобно. Ну а чем Вас смущает тип point? По умолчанию у Вас заданы координаты на плоскости X и y
...
Рейтинг: 0 / 0
28.01.2014, 16:50:39
    #38540841
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
в догонку к Ы

постгрес видимо не предоставляет литеральной записи пойнтов. но конструкторы есть.
при этом , хотя пойнт - array, но array - не пойнт.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT
 '(1,2)'::point 
 ,point '(2.0,0)'
 ,(1.2,2.1)/*record, not point*/
 ,(point '(2.0,0)')[0]
/*, array[1.1,2.1]::point --ОШИБКА:  преобразовать тип numeric[] в point нельзя */
;
...
Рейтинг: 0 / 0
28.01.2014, 17:01:48
    #38540868
letete
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
т.е. необходимо, для записи в тип point некоторого значения, предварительно указать его в виде строки?
типа так:
Код: plaintext
"threshold" point NOT NULL DEFAULT '(-0.1, 0.1)'::point, 
?

и по поводу лексем. значит и наименования полей я могу вводить без кавычек? а если в кавычках ввести "thREShold", то такую кракозябру потом и писать всю жизнь?

и еще. к типу serial обязательно добавлять UNIQUE?
...
Рейтинг: 0 / 0
28.01.2014, 17:13:57
    #38540891
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
letete<>
и еще. к типу serial обязательно добавлять UNIQUE?не обязательно, а когда оно вам надо.

serial - это комплект соглашений
1. default
2. именование сиквенса
3. OWNED BY ...table.column


PS забавно, что пж по умолчанию делает serial NOT NULL, когда я не прошу (или это только у меня). хотя можно потом отальтерить DROP NOT NULL.
...
Рейтинг: 0 / 0
28.01.2014, 17:24:20
    #38540926
letete
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
qwwqletete... обязательно ...?... не обязательно...не правильно выразился)) имеется ввиду входит ли UNIQUE как раз в этот комплект соглашений?
...
Рейтинг: 0 / 0
28.01.2014, 17:30:18
    #38540941
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
leteteqwwqпропущено...
... не обязательно...не правильно выразился)) имеется ввиду входит ли UNIQUE как раз в этот комплект соглашений?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create table test2
(a serial primary key
,b serial
);
ALTER TABLE test2 ALTER COLUMN b DROP NOT NULL;
INSERT INTO test2 (b) VALUES
	( 1)
	,(2)
	,(3)
	,(DEFAULT )
	,(DEFAULT )
	,(DEFAULT )
	;
SELECT * FROM test2;
/*----------------
1;1
2;2
3;3
4;1
5;2
6;3
----------------*/
DROP TABLE test2;
...
Рейтинг: 0 / 0
28.01.2014, 17:41:55
    #38540968
letete
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
qwwq,

это то, что я называю исчерпывающим ответом) Спасибо
...
Рейтинг: 0 / 0
04.02.2014, 14:36:54
    #38548662
letete
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
продолжу тему.

в конструкции WHERE как тип point сравнивать с некоторым значением?
Код: sql
1.
2.
3.
4.
SELECT * FROM amsets 
WHERE 	inside = false AND 
	threshold = '(-0.5,0.5)'::point AND 
	sigma = 3

Код: plaintext
1.
2.
3.
4.
ОШИБКА:  оператор не существует: point = point
LINE 3:  threshold = '(-0.5,0.5)'::point AND 
                   ^
HINT:  Оператор с данными именем и типами аргументов не найден. Возможно, вам следует добавить явные преобразования типов.

вроде бы так же как и при задании дефолта преобразую тип, но, по-видимому, система не понимает знака сравнения "="... как быть в этом случае?
...
Рейтинг: 0 / 0
04.02.2014, 16:28:56
    #38548937
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
может быть использовать оператор ~=

9.11. Geometric Functions and Operators
...
Рейтинг: 0 / 0
04.02.2014, 16:36:19
    #38548956
letete
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
LeXa NalBat,

может быть! спасибо, вроде работает)
...
Рейтинг: 0 / 0
04.02.2014, 17:39:45
    #38549101
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тип point
LeXa NalBatможет быть использовать оператор ~=

9.11. Geometric Functions and Operators
там несколько сюрпризов есть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
--'(NULL,0.5)'::point
(NULL::point ~= NULL::point) IS NULL
-- ОК
-- bug 1:
,'(Infinity,0.5)'::point ~='(Infinity,0.5)'::point
, 'Infinity'::double precision = 'Infinity'::double precision 

-- bug 2:
,'(-Infinity,0.5)'::point ~='(-Infinity,0.5)'::point
, -'Infinity'::double precision = -'Infinity'::double precision 

-- bug 3:
,'(NaN,0.5)'::point ~='(NaN,0.5)'::point
,'NaN'::double precision = -'NaN'::double precision
,'NaN'::double precision = 'NaN'::double precision


хотя из-за NaN и Infinity интуиция о возможности кастнуть флоат к нумерику нас подводит. Иногда - ножиданно

/самое забавное, когда очень малый нумерик отказывается каститься к 0-флоату из-за переполнения разрядов. т.е. интуиция о реализации не совпадает с реальностью ну оооочень неожиданно /
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тип point / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]