Инструмент Python, который создает схему зависимости для методов [закрытого] класса

Попробуйте также старый синтаксис для кастинга,

SELECT ROUND(AVG(some_column)::numeric,2)    
FROM table;

работает с любой версией PostgreSQL.

В некоторых функциях PostgreSQL наблюдается нехватка перегрузок (почему? ?): Я думаю, что «это недостаток» (!), Но @CraigRinger, @Catcall и команда PostgreSQL согласны с «историческим обоснованием pg».

PS: еще одна точка вокруг округления - это точность, проверьте @ ответ ЯнКенни .


Перегрузка в качестве стратегии кастинга

Вы может перегрузить функцию ROUND с помощью

 CREATE FUNCTION ROUND(float,int) RETURNS NUMERIC AS $$
    SELECT ROUND($1::numeric,$2);
 $$ language SQL IMMUTABLE;

Теперь ваша инструкция будет работать нормально, попробуйте (после создания функции)

 SELECT round(1/3.,4); -- 0.3333 numeric

, но она вернется NUMERIC ... Чтобы сохранить первую перегрузку коммо-использования, мы можем вернуть FLOAT-тип, когда предлагается параметр TEXT,

 CREATE FUNCTION ROUND(float, text, int DEFAULT 0) 
 RETURNS FLOAT AS $$
    SELECT CASE WHEN $2='dec'
                THEN ROUND($1::numeric,$3)::float
                -- ... WHEN $2='hex' THEN ... WHEN $2='bin' THEN... complete!
                ELSE 'NaN'::float  -- like an error message 
            END;
 $$ language SQL IMMUTABLE;

Попробовать

 SELECT round(1/3.,'dec',4);   -- 0.3333 float!
 SELECT round(2.8+1/3.,'dec',1); -- 3.1 float!
 SELECT round(2.8+1/3.,'dec'::text); -- need to cast string? pg bug 

PS: проверка \df round после перегрузок, покажет что-то вроде:

 Schema     |  Name | Result data type | Argument data types 
------------+-------+------------------+----------------------------
 myschema   | round | double precision | double precision, text, int
 myschema   | round | numeric          | double precision, int
 pg_catalog | round | double precision | double precision            
 pg_catalog | round | numeric          | numeric   
 pg_catalog | round | numeric          | numeric, int          

Функции pg_catalog являются стандартными, см. руководство по встроенным математическим функциям ].

16
задан Anonymous 28 April 2009 в 19:12
поделиться

4 ответа

Have you looked at Snakefood yet? It looks like it's exactly what you're looking for.

5
ответ дан 30 November 2019 в 23:27
поделиться

Вы пробовали pydev ? Это расширение Python для затмения. Я считаю, что это позволяет вам использовать функцию «иерархии вызовов» в Eclipse для просмотра графика вызовов для данного метода. Это не совсем то, что вы хотите, но, возможно, этого достаточно, чтобы начать.

1
ответ дан 30 November 2019 в 23:27
поделиться

Просто запущенное использование pydeps и до сих пор это работает хорошо.

0
ответ дан 30 November 2019 в 23:27
поделиться

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

ps.IDE eclipse + pydev

0
ответ дан 30 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: