powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тип point
15 сообщений из 15, страница 1 из 1
тип point
    #38540689
letete
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишу:
Код: 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
тип point
    #38540711
letete
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а еще в чем разница между
Код: plaintext
CREATE TABLE "AMSETS"
и
Код: plaintext
CREATE TABLE AMSETS
?
...
Рейтинг: 0 / 0
тип point
    #38540779
Dim666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leteteа еще в чем разница между
Код: plaintext
CREATE TABLE "AMSETS"
и
Код: plaintext
CREATE TABLE AMSETS
?Лексемы без кавычек постгрес приводит к нижнему регистру. Т.е. сможете писать "select * from AMSETS", "select * from AmSETs", "select * from amsets".
А если написали в кавычках, то в будущем так и придётся обращаться.
...
Рейтинг: 0 / 0
тип point
    #38540803
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
Код: 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
тип point
    #38540817
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leteteа еще в чем разница между
Код: plaintext
CREATE TABLE "AMSETS"
и
Код: plaintext
CREATE TABLE AMSETS
?
Postgres по умолчанию создает имена маленькими буквами, то есть во втором случае таблица будет иметь имя amsets
Если нужно обязательно использовать заглавные буквы (большие), то надо заключать в кавычки. Но тогда это надо делать во всех запросах, что очень неудобно. Ну а чем Вас смущает тип point? По умолчанию у Вас заданы координаты на плоскости X и y
...
Рейтинг: 0 / 0
тип point
    #38540841
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку к Ы

постгрес видимо не предоставляет литеральной записи пойнтов. но конструкторы есть.
при этом , хотя пойнт - 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
тип point
    #38540868
letete
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. необходимо, для записи в тип point некоторого значения, предварительно указать его в виде строки?
типа так:
Код: plaintext
"threshold" point NOT NULL DEFAULT '(-0.1, 0.1)'::point, 
?

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

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

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


PS забавно, что пж по умолчанию делает serial NOT NULL, когда я не прошу (или это только у меня). хотя можно потом отальтерить DROP NOT NULL.
...
Рейтинг: 0 / 0
тип point
    #38540926
letete
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwqletete... обязательно ...?... не обязательно...не правильно выразился)) имеется ввиду входит ли UNIQUE как раз в этот комплект соглашений?
...
Рейтинг: 0 / 0
тип point
    #38540941
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
тип point
    #38540968
letete
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,

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

в конструкции 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
тип point
    #38548937
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть использовать оператор ~=

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

может быть! спасибо, вроде работает)
...
Рейтинг: 0 / 0
тип point
    #38549101
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тип point
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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