Какой язык Вы используете для триггеров PostgreSQL и хранимых процедур? [закрытый]

В C ++ 11 возможно:

auto array = new double[M][N]; 

Таким образом, память не инициализируется. Для инициализации это сделайте это вместо:

auto array = new double[M][N]();

Пример программы (скомпилируйте с помощью «g ++ -std = c ++ 11»):

#include <iostream>
#include <utility>
#include <type_traits>
#include <typeinfo>
#include <cxxabi.h>
using namespace std;

int main()
{
    const auto M = 2;
    const auto N = 2;

    // allocate (no initializatoin)
    auto array = new double[M][N];

    // pollute the memory
    array[0][0] = 2;
    array[1][0] = 3;
    array[0][1] = 4;
    array[1][1] = 5;

    // re-allocate, probably will fetch the same memory block (not portable)
    delete[] array;
    array = new double[M][N];

    // show that memory is not initialized
    for(int r = 0; r < M; r++)
    {
        for(int c = 0; c < N; c++)
            cout << array[r][c] << " ";
        cout << endl;
    }
    cout << endl;

    delete[] array;

    // the proper way to zero-initialize the array
    array = new double[M][N]();

    // show the memory is initialized
    for(int r = 0; r < M; r++)
    {
        for(int c = 0; c < N; c++)
            cout << array[r][c] << " ";
        cout << endl;
    }

    int info;
    cout << abi::__cxa_demangle(typeid(array).name(),0,0,&info) << endl;

    return 0;
}

Выход:

2 4 
3 5 

0 0 
0 0 
double (*) [2]
21
задан Erwin Brandstetter 14 October 2011 в 07:28
поделиться

8 ответов

Использование Skype PostgreSQL вместе с Python, и они улучшились МН / Python к, он - текущее состояние, таким образом, я сомневался бы, что поддержка Python далека позади жемчуга. Они записали организацию очередей/систему репликации сверх той привязки, после всего:-)

Смотрите: Wiki Skytools

От беглого взгляда в документации, Python, кажется, имеет меньше документации, чем привязка жемчуга, но я предложил бы просто придерживаться языка, которым Вы являетесь самыми довольными.

6
ответ дан 29 November 2019 в 21:07
поделиться

Когда я записал свой первый триггер, это было в Perl, потому что это было языком, используемым в примере, который я нашел, но последние триггеры, которые я записал, где в Python, потому что я более доволен этим.

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

4
ответ дан 29 November 2019 в 21:07
поделиться

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

3
ответ дан 29 November 2019 в 21:07
поделиться

Я только действительно использовал PL/pgSQL, но это было то, потому что я нуждался в нескольких хранимых процедурах относительно быстро и не хотел добавлять дополнительные модули к серверу.

Долгосрочная перспектива, я, вероятно, использовал бы МН / Perl или МН / Python, поскольку я использую жемчуг для быстрых сценариев и смотрел на Python некоторое время теперь.

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

, Что, объединенный с очень хорошей средой отладки, означал, что мой первый опыт записи процедур включал рассмотрение странных синтаксических ошибок в течение долгого времени.

, Если кто-то знает о хорошем сайте с учебными руководствами и т.д. для программирования PostgreSQL, я хотел бы получить ссылку на него.

7
ответ дан 29 November 2019 в 21:07
поделиться

Я пишу в значительной степени все в plpgsql, но я - также парень базы данных прежде всего, таким образом, он обычно подходит мне лучше, чем какой-либо другой язык. Но существует много вещей, которые это не делает очень хорошо, в этом случае другой язык, такой как plperl или plpython является хорошей ставкой. Конечно, если скорость является серьезным беспокойством, C является способом пойти.

5
ответ дан 29 November 2019 в 21:07
поделиться

Пуазейль/Ruby, потому что я использую Ruby каждый день так или иначе.

3
ответ дан 29 November 2019 в 21:07
поделиться

Я использую PL/pgSQL для большинства все, и если существует что-то, что он не может сделать, я пишу функции в МН / Python (который качается). Можно также использовать МН / Java, МН / Perl, PL/PHP.

я сказал бы, что Python является, вероятно, лучшим все вокруг того, потому что Python идет примерно каждая система Linux. Perl был бы вторым с Python, бьющим его из-за более легкого синтаксиса чтения.

3
ответ дан 29 November 2019 в 21:07
поделиться

Я использую PL / Perl, потому что:

  • Мне нравится Perl
  • Это динамический язык, что означает, что вы можете легко выполнять некоторые полезные трюки, например, передавать имя столбца в триггер функция и выполнение некоторых действий со значением этого столбца в кортеже триггера.
  • Имеется довольно хорошая документация
3
ответ дан 29 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

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