Если в функции PostgreSQL я использую такие значения, как 1.0 или 100.0, какой тип предполагается иметь у этого литерала?
Я имею в виду, что если я использую эти литералы в каком-то выражении, я хочу знать, какие неявные преобразования/продвижения типов происходят? Чтобы это знать мне нужно знать тип 1.0 или 100.0?
Например. если я наберу
CAST ( ( 1.0 * A ) / B AS NUMERIC(12,6) );
где A и B — целые числа, какие продвижения типа здесь происходят (до явного приведения к NUMERIC(12,6)?!
Мне трудно найти информацию об этом в официальной документации PostgreSQL.


Это объясняется в документация:
A numeric constant that contains neither a decimal point nor an exponent is initially presumed to be type integer if its value fits in type integer (32 bits); otherwise it is presumed to be type bigint if its value fits in type bigint (64 bits); otherwise it is taken to be type numeric. Constants that contain decimal points and/or exponents are always initially presumed to be type numeric.
Что касается вашего выражения, оно сначала оценивается, а затем преобразуется в указанный тип.
"числовой, а не с плавающей запятой?" Нет не плавает, в мануале написано типа числовой "А с какой точностью и масштабом?" @peter.petrov Я предполагаю, что точность и масштаб автоматические, в руководстве показаны некоторые примеры, которые являются допустимыми, каждое число отличается по точности и масштабу. Также в документации упоминается больше: «вы можете принудительно обрабатывать числовое значение как реальный тип ( поплавок4), написав:REAL '1.23' -- стиль строки 1.23::REAL -- стиль PostgreSQL (исторический)"
Это numeric без точности и масштаба (без ограничений). См. документацию на numeric.
Спасибо. Так это числовое, а не плавающее? А числовые с какой точностью и масштабом?