Size: a a a

pgsql – PostgreSQL

2020 August 14

R

Rasha in pgsql – PostgreSQL
FROM  (values ($1, $2), ($3, $4), ($5, $6)) as v(id, display_order) выглядит вроде ужасно))
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Алексей
мне кажется это не именно про postgis вопрос, в любую другую функцию тоже может строка приниматься, внутри которой нужно параметры подставлять
Да, не про postgis. Я к тому, что во-первых, должен быть способ умнее, чем строки клеить; во-вторых, вот такое работает (просто postgis у меня сейчас нет):
CREATE OR REPLACE FUNCTION ST_GeomFromEWKT(arg1 text)
RETURNS int
LANGUAGE SQL IMMUTABLE AS
$function$
SELECT 1;
$function$;

WITH last_coordinates(longitude, latitude) AS (
  SELECT 2.0, 5.0
)
SELECT ST_GeomFromEWKT(format('SRID=4326;POINT(%s, %s)', longitude, latitude))
 FROM last_coordinates;

Так что, казалось бы, всё Вы правильно делаете в плане сборки аргумента функции... а ошибка хоть какая?
источник

А

Алексей in pgsql – PostgreSQL
Yaroslav Schekin
Да, не про postgis. Я к тому, что во-первых, должен быть способ умнее, чем строки клеить; во-вторых, вот такое работает (просто postgis у меня сейчас нет):
CREATE OR REPLACE FUNCTION ST_GeomFromEWKT(arg1 text)
RETURNS int
LANGUAGE SQL IMMUTABLE AS
$function$
SELECT 1;
$function$;

WITH last_coordinates(longitude, latitude) AS (
  SELECT 2.0, 5.0
)
SELECT ST_GeomFromEWKT(format('SRID=4326;POINT(%s, %s)', longitude, latitude))
 FROM last_coordinates;

Так что, казалось бы, всё Вы правильно делаете в плане сборки аргумента функции... а ошибка хоть какая?
SELECT ST_GeomFromEWKT('SRID=4326;POINT(longitude, latitude)') FROM last_coordinates ;
ERROR:  parse error - invalid geometry
HINT:  "SRID=4326;POINT(lo" <-- parse error at position 18 within geometry
источник

А

Алексей in pgsql – PostgreSQL
вот что пишет
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Алексей
SELECT ST_GeomFromEWKT('SRID=4326;POINT(longitude, latitude)') FROM last_coordinates ;
ERROR:  parse error - invalid geometry
HINT:  "SRID=4326;POINT(lo" <-- parse error at position 18 within geometry
Так это ошибка "изнутри" функции (но вообще, похоже на то, что Вам-таки не удалось передать туда правильный текст... нет?).
Вот это https://t.me/pgsql/245141 надо было использовать (как в моём примере, я у Вас же "содрал").
источник

А

Алексей in pgsql – PostgreSQL
Yaroslav Schekin
Так это ошибка "изнутри" функции (но вообще, похоже на то, что Вам-таки не удалось передать туда правильный текст... нет?).
Вот это https://t.me/pgsql/245141 надо было использовать (как в моём примере, я у Вас же "содрал").
использовать format?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Rasha
UPDATE table_name AS p SET
display_order = v.display_order::smallint
FROM  (values ($1, $2), ($3, $4), ($5, $6)) as v(id, display_order)
WHERE p.id = v.id::uuid AND p.offer_id = $7
По крайней мере, это корректный запрос. А в чём вопрос-то? ;)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Алексей
использовать format?
По крайне мере, так должно работать (показал же пример).
А вообще, опять-таки, спросите postgis-овцев — собирать тексты, чтобы тут же postgis-у приходилось разбирать их обратно, как-то тупо (должна быть более подходящая функция).
источник

А

Алексей in pgsql – PostgreSQL
спрашиваю в postgis чате, мне ответили, что POINT это не функция :)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Алексей
спрашиваю в postgis чате, мне ответили, что POINT это не функция :)
Я уже функцию нагуглил. ;)
https://postgis.net/docs/ST_GeomFromEWKT.html
Вот же пример:
SELECT ST_GeomFromEWKT('SRID=4269;POINT(-71.064544 42.28787)');
Т.е. у Вас запятая между элементами point лишняя, получается. А вообще, лучше б Вы их спросили, что Вам использовать вместо ST_GeomFromEWKT, когда у Вас уже есть координаты и SRID числами.
источник

А

Алексей in pgsql – PostgreSQL
Yaroslav Schekin
Я уже функцию нагуглил. ;)
https://postgis.net/docs/ST_GeomFromEWKT.html
Вот же пример:
SELECT ST_GeomFromEWKT('SRID=4269;POINT(-71.064544 42.28787)');
Т.е. у Вас запятая между элементами point лишняя, получается. А вообще, лучше б Вы их спросили, что Вам использовать вместо ST_GeomFromEWKT, когда у Вас уже есть координаты и SRID числами.
ааааа....
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
подскажите пож-ста если я запущу pg_repack по определённой таблице, он и индексы по ней перестроит?
источник

А

Алексей in pgsql – PostgreSQL
Yaroslav Schekin
Я уже функцию нагуглил. ;)
https://postgis.net/docs/ST_GeomFromEWKT.html
Вот же пример:
SELECT ST_GeomFromEWKT('SRID=4269;POINT(-71.064544 42.28787)');
Т.е. у Вас запятая между элементами point лишняя, получается. А вообще, лучше б Вы их спросили, что Вам использовать вместо ST_GeomFromEWKT, когда у Вас уже есть координаты и SRID числами.
косяк в запятой был внутри POINT, спасибо за подсказку :)
источник

DP

Darafei Praliaskousk... in pgsql – PostgreSQL
https://postgis.net/docs/ST_MakePoint.html вторая строчка примера
источник

DP

Darafei Praliaskousk... in pgsql – PostgreSQL
расскажите, что помешало найти эту страницу в документации?
источник

А

Алексей in pgsql – PostgreSQL
Darafei Praliaskouski
https://postgis.net/docs/ST_MakePoint.html вторая строчка примера
вот, это совсем другое дело. Спасибо.
источник

R

Rasha in pgsql – PostgreSQL
кто поможет разобраться с ошибкой??

cannot convert 2020-08-14 15:39:22.027903 +0300 MSK m=+2.033063751 to Text


UPDATE panoramas AS p SET
display_order = v.display_order::smallint, created_at = v.created_at::timestamp, updated_at = v.updated_at::timestamp
FROM  (values %s) as v(id, display_order, created_at, updated_at)
WHERE p.id = v.id::uuid AND p.offer_id = $%d
источник

R

Rasha in pgsql – PostgreSQL
никто не подскажет, что за ошибка такая cannot convert 2020-08-14 16:04:24.030764 +0300 MSK m=+0.984236593 to Text??
источник

D

Daiana in pgsql – PostgreSQL
Всем привет, кто-нибудь может подсказать по ошибке 42601 синтаксической, не могу понять что исправить
источник

D

Daiana in pgsql – PostgreSQL
источник