Size: a a a

pgsql – PostgreSQL

2020 July 30

T

The Fallen Phoenix in pgsql – PostgreSQL
Хотя не, могу
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
const byteToHex = [];

for (let i = 0; i < 256; ++i) {
 byteToHex.push((i + 0x100).toString(16).substr(1).toLowerCase());
}

const mapHex = (block = []) => block.map(x => byteToHex[x]).join("")

function v1_simplified(msecs = Date.now()) {
 msecs += 12219292800000;
 const tl  = ((msecs & 0xfffffff) * 10000) % 0x100000000;
 const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;
 
 const A = [ (tl >>> 24) & 0xff, (tl >>> 16) & 0xff, (tl >>> 8) & 0xff, tl & 0xff ]
 const B = [ (tmh >>> 8) & 0xff, tmh & 0xff ]
 const C = [ ((tmh >>> 24) & 0xf)| 0x10, (tmh >>> 16) & 0xff ]

 return `${mapHex(A)}-${mapHex(B)}-${mapHex(C)}-8000-000000000000`;
}

console.log(v1_simplified(Date.parse('04 Dec 1995 00:12:00 GMT')))
// 5fc18800-2dd0-11cf-8000-000000000000
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
function v1_simplified(msecs = Date.now()) { 
 msecs += 12219292800000;
 const tl  = ((msecs & 0xfffffff) * 10000) % 0x100000000;
 const th = ((msecs / 0x100000000) * 10000) & 0xfffffff;
 
 const tl_string = tl.toString(16).padStart(8, "0")
 const th_string1 = th.toString(16).padStart(8, "0").slice(1, 4)
 const th_string2 = th.toString(16).padStart(8, "0").slice(4, 8)
 
 return `${tl_string}-${th_string2}-1${th_string1}-8000-000000000000`;
}

console.log(v1_simplified(Date.parse('04 Dec 1995 00:12:00 GMT')))
// 5fc18800-2dd0-11cf-8000-000000000000
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
Вжух
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
Забирай функцию)
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
function v1_simplified(msecs = Date.now()) { 
 msecs += 12219292800000;
 const str = (msecs*10000).toString(16).padStart(15, "0")
 return `${str.slice(7)}-${str.slice(3, 7)}-1${str.slice(0, 3)}-8000-000000000000`;
}

console.log(v1_simplified(Date.parse('04 Dec 1995 00:12:00 GMT')))
// 5fc18800-2dd0-11cf-8000-000000000000
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
И финальный аккорд
источник

🔘

🔘лег in pgsql – PostgreSQL
Может подскажет кто что за ошибка такая "non-LATERAL parameter required by subquery" и почему на виндовом сервере её нет а на линуховом есть. возвращается во время селекта из вьюхи в которой пару джойнов с LATERAL. вьюха одинаковая, специально пересоздавал. select тоже одинаковый. запускал везде... гугл ответа не дал(
источник

🔘

🔘лег in pgsql – PostgreSQL
PostgreSQL 11.5, compiled by Visual C++ build 1914, 64-bit (всё ок)
PostgreSQL 11.5 (Ubuntu 11.5-1.1C) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 8.3.0-16ubuntu3~16.04) 8.3.0, 64-bit (с ошибкой)
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
Видимо придется предоставить минимальный пример, на котором проблема ещё есть.
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
Я так понимаю проблема может быть воспроизведена без данных вообще. Чисто схемы важны таблиц.
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
Ну и запрос понятно дело
источник

🔘

🔘лег in pgsql – PostgreSQL
схемы таблиц одинаковые. запрос очень большой и в лоб тупой, столбцы, left join, where exists с 1 запросом. никакой черной магии. во вьюхе по сути то же самое, разве что джойны (несколько) не по таблице а через конструкцию

CROSS JOIN LATERAL(
     SELECT "DocumentDate" FROM "AccountingDocument" AS "ADoc"
           WHERE "ADoc"."ProblemAssetId" = "PA"."Id"
           ORDER BY "ADoc"."DocumentDate" DESC NULLS LAST LIMIT 1
   ) "lastDoc"

(таких 4 джойна). для меня выглядит и выглядело как обычный запрос. ошибку такую впервые встретил когда базу переносил на другой сервер (во время первых же тестов). запрос генерит самописная ORM
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
PA слева или справа от данного куска определена?
источник

🔘

🔘лег in pgsql – PostgreSQL
слева конечно. это целевая таблица FROM
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
Эта самописная ORM выдает одинаковые запросы на разных системах?
источник

T

The Fallen Phoenix in pgsql – PostgreSQL
Порядок следования не меняется?
источник

🔘

🔘лег in pgsql – PostgreSQL
на нескольких виндовых серверах прекрасно отрабатывает вся эта логика, а благодаря lateral join работает в разы быстрее subquery.а на новом серваке не работает. мне кажется оптимизатор гдето там в дебрях не так работает
источник

🔘

🔘лег in pgsql – PostgreSQL
The Fallen Phoenix
Эта самописная ORM выдает одинаковые запросы на разных системах?
я готовый запрос из логов тестил. т.е. да, до символа одинаковый. и вьюху обновлял и даже текст смотрел после обновления через \d+ viewName
источник

🔘

🔘лег in pgsql – PostgreSQL
текст оптимизирован немного, но совпадает
источник