Преобразовать bigint в bytea, но поменять порядок байтов.

У меня есть таблица PostgreSQL, в которой я хочу изменить столбец с bigintна byteabyte, чтобы вместить больше данных. Я думаю, используя следующую последовательность:

  1. изменить таблицу mytable добавить новый_столбец
  2. обновить набор mytable новый_столбец = int8send(старый_столбец)
  3. изменить таблицу удалить старый_столбец
  4. изменить таблицу переименовать новый_столбец в старый_столбец

Приведенная выше последовательность работает, единственная проблема заключается в том, что я хочу, чтобы последовательность байтов в byteaбыла перевернутой. Например, если значение в old_columnравно 0x1234567890abcdef, приведенная выше последовательность будет генерировать \0224Vx\220\253\315\357, но я хочу, чтобы это быть \357\315\253\220xV4\022. Похоже, что результирующий byteaиспользует порядок с обратным порядком байтов от исходного bigint.

Есть ли простой способ сделать это без написания программы? Я искал функцию swap64()в PostgreSQL, но не нашел.

5
задан Erwin Brandstetter 3 December 2016 в 01:26
поделиться