УкраїнськаEnglishРocсийский
Вход/Новый
В теме нет новых постов

Анализ запросов к базе данных


Автор Сообщение
Сообщение создано: 30. 07. 2019 [14:57]
ignusius
Александр Комаров
Создатель темы
Зарегистрирован(а) с: 24.09.2015
Сообщения: 14
Есть виртуальный PostgreSQL-сервер для архивирования, то есть программа симулирующая работу сервера, но вот почему-то значения формируются как строки.

Q--> SELECT c.relname as "TableName" FROM pg_catalog.pg_class c JOIN pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','v','S','') AND n.nspname <> 'pg_catalog' AND n.nspname !~ '^pg_toast' AND pg_catalog.pg_table_is_visible(c.oid) <--Q
Q--> SELECT count(*) FROM pg_catalog.pg_class c JOIN pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','v','S','') AND n.nspname <> 'pg_catalog' AND n.nspname !~ '^pg_toast' AND pg_catalog.pg_table_is_visible(c.oid) AND c.relname = 'DBAVl_nn_P1_U_1_A' <--Q
Q--> SELECT a.attname as "Field", pg_catalog.format_type(a.atttypid, a.atttypmod) as "Type" FROM pg_catalog.pg_attribute a WHERE a.attnum > 0 AND NOT a.attisdropped AND a.attrelid = ( SELECT c.oid FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relname ~ '^(DBAVl_nn_P1_U_1_A)$' AND pg_catalog.pg_table_is_visible(c.oid) ) <--Q
Q--> SELECT a.attname FROM pg_class c, pg_class c2, pg_index i, pg_attribute a WHERE c.relname = 'DBAVl_nn_P1_U_1_A' AND c.oid = i.indrelid AND i.indexrelid = c2.oid AND i.indisprimary AND i.indisunique AND a.attrelid=c2.oid AND a.attnum>0; <--Q
Q--> BEGIN; <--Q
Q--> SELECT 1 FROM "DBAVl_nn_P1_U_1_A" WHERE "MARK"='156448691' AND "TM"='1564486911' <--Q
Q--> INSERT INTO "DBAVl_nn_P1_U_1_A" ("MARK" ,"TM" ,"VAL" ) VALUES ('156448691' ,'1564486911' ,'235.270004272461' )

Может есть мысли почему? Просто на все приведённые select'ы, формируются таблички как на реальном сервере.
Сообщение создано: 30. 07. 2019 [15:28]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3679
"ignusius" wrote:

Может есть мысли почему?

Для единообразия.

Learn, learn and learn better than work, work and work.
Сообщение создано: 30. 07. 2019 [15:34]
ignusius
Александр Комаров
Создатель темы
Зарегистрирован(а) с: 24.09.2015
Сообщения: 14
"roman" wrote:

"ignusius" wrote:

Может есть мысли почему?

Для единообразия.


Роман, а конкретнее? :D
Сообщение создано: 30. 07. 2019 [21:42]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3679
"ignusius" wrote:

"roman" wrote:

"ignusius" wrote:

Может есть мысли почему?

Для единообразия.

Роман, а конкретнее? :D

Куда уже конкретнее — приведено к единообразному виду в процессе унификации, что однако сейчас и позволяет просто убрать кавычки не у строк.

Убрал собственно.

Learn, learn and learn better than work, work and work.
Сообщение создано: 31. 07. 2019 [07:56]
ignusius
Александр Комаров
Создатель темы
Зарегистрирован(а) с: 24.09.2015
Сообщения: 14
"roman" wrote:

Куда уже конкретнее — приведено к единообразному виду в процессе унификации, что однако сейчас и позволяет просто убрать кавычки не у строк.


Например база создаётся автоматически:
CREATE TABLE public."DBAVl_pg_arch_P1_I_1_A"
(
"MARK" bigint NOT NULL DEFAULT '0'::bigint,
"TM" timestamp with time zone NOT NULL DEFAULT '1970-01-01 00:00:00+00'::timestamp with time zone,
"VAL" double precision,
CONSTRAINT "DBAVl_pg_arch_P1_I_1_A_pkey" PRIMARY KEY ("MARK", "TM")
)

А вот уже запросы к базе которые приходят у меня;
INSERT INTO "DBAVl_nn_P1_U_1_C" ("MARK" ,"TM" ,"VAL" ) VALUES ('156454867' ,'2019-07-31 04:51:10' ,'237.660003662109' )

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



Сообщение создано: 01. 08. 2019 [08:10]
ignusius
Александр Комаров
Создатель темы
Зарегистрирован(а) с: 24.09.2015
Сообщения: 14
"roman" wrote:

приведено к единообразному виду в процессе унификации, что однако сейчас и позволяет просто убрать кавычки не у строк.


Просто мне непонятно, как это будет работать, и почему?



11863