Когда я вызываю функцию и передаю ей аргумент, действительно ли значение этого аргумента копируется в память, так что вызываемая функция получает копию значения или ей передается ссылка / указатель?
Полагаю, в некоторых случаях это очевидно - например, я ожидаю, что будет скопировано целое число, но что если у меня будет большая строка, массив или строка таблицы?
Из моих собственных наблюдений видно, что значение всегда копируется, потому что я могу редактировать значение в вызываемой функции без изменения значения в вызывающей функции. На самом деле я не могу вспомнить ни одного случая, когда бы я мог изменить что-то, переданное в качестве аргумента, и заставить вызывающую функцию принять изменение, не возвращая измененные данные из вызываемой функции.
По этой причине мне всегда непросто передавать большие объемы данных из одной функции в другую. Я не смог найти никакой документации о том, как postgres обрабатывает аргументы, отсюда и этот вопрос. Я использую следующие типы функций: SQL и plpgsql.