Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Несоответствие работы Netezza документации или недопонимание / 11 сообщений из 11, страница 1 из 1
28.11.2013, 14:04
    #38481740
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие работы Netezza документации или недопонимание
Народ, в мануале по хранимым процедурам нетизы есть фраза

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Literals and Math Operations in Expressions If your stored procedures perform math operations in expressions, carefully consider the supported ranges for literals and the possible implicit typecasts that the Netezza system may perform. These ranges and behaviors could cause unexpected results in complex math expressions.

For example, all integer literals are 32-bit (signed) numbers by default, which supports a range of values from -2147483648 to 2147483647. If you perform math operations on a literal, use caution to check for overflows. For example, the following stored procedure defines a numeric value n, assigns it the largest supported value (2147483647) and then adds 1 to the value:

CREATE OR REPLACE PROCEDURE num() RETURNS BOOL LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE
n NUMERIC;
BEGIN
n := 2147483647;
RAISE NOTICE 'n is %', n;
n := 2147483647 + 1;
RAISE NOTICE 'n is %', n;
END;
END_PROC;

If you create and run this stored procedure, the output is as follows:

NOTICE: n is 2147483647
NOTICE: n is -2147483648

The output demonstrates that when a value “overflows” its maximum range value, the value wraps to its minimum value and begins again. To avoid this counter-wrap behavior, you must either use a cast operation to cast n to a higher precision type, or assign values to intermediate values. For example, the following stored procedure creates the counter-wrap issue for the numeric value n, but then



Запускается хранимка
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE PROCEDURE SP_NEW_PROCEDURE() RETURNS BOOLEAN LANGUAGE NZPLSQL AS 
BEGIN_PROC 
DECLARE n NUMERIC; BEGIN
	
	n := 2147483647;
	RAISE NOTICE 'n is %', n;
	n := 2147483647 + 1;
	RAISE NOTICE 'n is %', n;
END;
END_PROC;
...
Рейтинг: 0 / 0
28.11.2013, 14:05
    #38481747
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие работы Netezza документации или недопонимание
А результат такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Результат:
ERROR [01000] NOTICE:  n is 2147483647

ERROR [01000] NOTICE:  Error occurred while executing PL/pgSQL function SP_NEW_PROCEDURE

ERROR [01000] NOTICE:  line 7 at assignment

ERROR [HY000] ERROR:  overflow in 32 bit arithmetic


Собственно меня то такое поведение больше устраивает, ибо оно логично и понятно, но вопрос: о чём тогда мануал - выходит он некорректен или я чего-то недопонимаю?
...
Рейтинг: 0 / 0
29.11.2013, 03:04
    #38482768
Несоответствие работы Netezza документации или недопонимание
Shtock,

Дока не права.
...
Рейтинг: 0 / 0
29.11.2013, 14:35
    #38483377
Несоответствие работы Netezza документации или недопонимание
Поднял PMR в поддержку # 12703,821,821
...
Рейтинг: 0 / 0
30.11.2013, 19:23
    #38484597
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие работы Netezza документации или недопонимание
Спасибо. Есть у меня предчувствие, что подкину ещё таких несоответствий :)
...
Рейтинг: 0 / 0
03.12.2013, 00:53
    #38486796
Несоответствие работы Netezza документации или недопонимание
Shtock,

очень хорошо. постараюсь все их запихать в по назначению (в поддержку)
...
Рейтинг: 0 / 0
03.12.2013, 11:36
    #38487085
Andrey.L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие работы Netezza документации или недопонимание
Доку может и поправят в соответствие с тем как работает, а ПО вряд ли :(
...
Рейтинг: 0 / 0
03.12.2013, 21:31
    #38488051
Hunterik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие работы Netezza документации или недопонимание
Andrey.L,
да, все вендоры слишком торопяться в гонке друг с другом, как говорится "time to market"... Вот и лезут косяки - время такое.
Но не в данном случае. =) Система ведёт себя так, как устраивает пользователя, а вот дока отстала.
...
Рейтинг: 0 / 0
05.12.2013, 17:54
    #38490817
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие работы Netezza документации или недопонимание
Кстати, имею некую презентацию "Netezza_Technical_Deep_Dive_for_Technical_Sellers_rus", переведённую неким Андреем Выходцевым :) и там опять ошибка :). Приводится пример Zone map с типом varchar, а 3 страницы назад рассказывается, что она только для int и date :)
...
Рейтинг: 0 / 0
06.12.2013, 09:43
    #38491306
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие работы Netezza документации или недопонимание
Похоже я понял в чём глубина глубин - авторы презентации хотели показать, что при кластеризации таблиц происходит как-бы расширение набора типов данных для zonemap, только не очень наглядно это вышло
...
Рейтинг: 0 / 0
20.12.2013, 10:11
    #38507497
Несоответствие работы Netezza документации или недопонимание
По PMR отписались что поправят доку ддя всех версий.
По поводу zonemaps для varchar - работает в случае использования кластерных таблиц или mat. View но в этом случае zonemap'ятся первые 10 байт
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Несоответствие работы Netezza документации или недопонимание / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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