1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dolphindb-release

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
compatibility_changes.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 03:18 0a04dde

Совместимость изменений

============================================================================================

Примечание: Этот файл содержит изменения совместимости для DolphinDB Server версии 1.30.22/2.00.10 и более ранних версий. Начиная с версии 1.30.23/2.00.11, этот файл больше не поддерживается. Для получения информации о выпуске и документации по последнему серверу DolphinDB, пожалуйста, обратитесь к новой документации DolphinDB.

============================================================================================

Этот файл предоставляет обзор новых функций и изменений (включая обновления для соответствия отраслевым стандартам) в версии 1.30.22/2.00.10, которые могут повлиять на ваши существующие скрипты и конфигурации.

Пожалуйста, внимательно изучите файл, чтобы понять, как ваша текущая настройка может быть затронута обновлением до этой версии.

Версия 2.00.10.8

Влияние на систему из-за исправлений ошибок

  • В версиях до 2.00.10.8 при использовании вложенной агрегатной функции в запросе к таблице в памяти с предложением group by возникала ошибка. Начиная с версии 2.00.10.8 и далее эта проблема была устранена.
  • В версии до 2.00.10.8 функция streamEngineParser выполнялась без сообщения об ошибке при указании индекса вне границ для параметра metrics. Начиная с версии 2.00.10.8 и далее она будет выдавать ошибку «вне индекса».

Версия 2.00.10.5

Влияние на систему из-за исправлений ошибок

  • В версии 2.00.10.4 попытки выполнения операций заполнения нулями (таких как ffill) на векторах массивов, которые фактически не содержали нулевых значений, приводили к ошибке. С этой версии эта проблема решена.

Версия 2.00.10.4

Изменения, внесённые для соответствия отраслевой практике или стандартам SQL

  • Ранее функции div и mod возвращали NULL, когда делитель (параметр Y) был отрицательным. Начиная с этой версии функции div и mod возвращают правильные результаты, что соответствует поведению операторов Python '/' и '%'.
  • Поведение join, join! и append! при объединении двух кортежей было изменено, чтобы соответствовать тому, как они работали в версиях ранее 2.00.10.1.

Влияние на систему из-за исправлений ошибок

  • Для таблицы, возвращаемой pivot by, теперь сообщается об ошибке, когда ffill, bfill или lfill с указанным параметром limit используется в качестве вложенной функции в операторе select. В предыдущих версиях возвращались неверные результаты.

  • Изменённая функция cumlastNot: теперь сообщается об ошибке, если входной аргумент является вектором массива. В предыдущих версиях возвращались неверные результаты.

Версия 2.00.10.2

Изменения, внесённые для соответствия отраслевой практике или стандартам SQL

  • Удалена функция getClusterReplicationMetrics. Добавлена функция getSlaveReplicationQueueStatus как наследование getClusterReplicationMetrics.

  • При вызове функции toStdJson:

    • Для логических значений предыдущие версии возвращали 1 и 0, но теперь возвращает true и false.
    • Для NULL-значений предыдущие версии преобразовывали только интегральные, плавающие и логические значения NULL в JSON null, другие типы преобразовывались в «». Теперь значения NULL всех типов, кроме STRING, преобразуются в null.

Влияние на систему из-за исправлений ошибок

  • Функция license теперь по умолчанию возвращает информацию о лицензии в памяти, а не из файла .lic, как в предыдущих версиях.

Версия 2.00.10.1

Изменения, внесённые для соответствия отраслевой практике или стандартам SQL

  • Изменено поведение функций join, join! и append!, когда объединяются два кортежа. //SQL statement using a subquery after "in" can be executed properly

select distinct date from temp_t where date in select temporalAdd(date, 2M) from temp_t

- The right table of `wj`/`pwj` cannot be a DFS table.

### Plguins

- Removed methods `httpCreateSubJob`, `httpCreateMultiParserSubJob`, `httpCancelSubJob` and `httpGetJobStat` from the httpClient plugin.

---

## Version 1.30.22.4

### Changes Made to Match Industry Practices or SQL Standards

- Поведение функций join, join! и append! при объединении двух кортежей было возвращено к тому, как они работали в версиях ранее 2.00.10.1.

## Version 1.30.22.2

### Changes Made to Match Industry Practices or SQL Standards

- Убрана функция getClusterReplicationMetrics. Добавлена функция getSlaveReplicationQueueStatus как наследование getClusterReplicationMetrics.

- При вызове функции toStdJson:
  - Для логических значений предыдущие версии возвращали 1 и 0, теперь возвращаются true и false.
  - Для NULL-значений предыдущие версии преобразовывали только целочисленные, плавающие и логические значения NULL в JSON null, другие типы преобразовывались в «». Теперь значения NULL всех типов, кроме STRING, преобразуются в null.

### System Impacts Caused by Bug Fixes

- Функция license теперь возвращает информацию о лицензии в памяти по умолчанию вместо информации из файла .lic, как в предыдущих версиях.

## Version 1.30.22.1

### Changes Made to Match Industry Practices or SQL Standards

- Изменено поведение функций join, join! и append! при объединении двух кортежей.

    ```
    a = [[1,2],[3,4]]
    b = [[5,6],[7,8]]
    a.join(b)
    //Output (предыдущие версии): ([1,2],[3,4],([5,6],[7,8]))
    //Output (начиная с этой версии): ([1,2],[3,4],[5,6],[7,8])
    
    a.join!(b)
    a
    //Output (предыдущие версии):([1,2],[3,4],([5,6],[7,8]))
    //Output (начиная с этой версии): ([1,2],[3,4],[5,6],[7,8])
    
    a.append!(b)
    a
    //Output (предыдущие версии):([1,2],[3,4],([5,6],[7,8]))
    //Output (начиная с этой версии): ([1,2],[3,4],[5,6],[7,8])

System Impacts Caused by Bug Fixes

  • Когда параметр triggeringPattern функции streamEngineParser установлен в 'keyCount', параметр keepOrder теперь должен быть установлен в true. Установка triggeringPattern = 'keyCount' с keepOrder = false вызывает ошибку.

  • При использовании функции более высокого порядка accumulate в параметре metrics функции createReactiveStateEngine, параметр consistent функции accumulate больше не может быть установлен в false.

Version 1.30.22

Changes Made to Match Industry Practices or SQL Standards

  • Повторное использование одной и той же потоковой таблицы несколько раз с помощью функции share или enableTableShareAndPersistence теперь приводит к ошибке.

    n=10000;
    t=streamTable(2020.01.01T00:00:00 + 0..(n-1) as timestamp, rand(`IBM`MS`APPL`AMZN,n) as symbol, rand(10.0, n) as value)
    share t as t1
    share t as t2 
    //В предыдущих версиях скрипт выше мог быть успешно выполнен.
    //Начиная с этой версии вторая операция share вызовет ошибку: Эта таблица потока уже была разделена как 't1'.
    //Это изменение применяется не только к оператору "share", но также к функциям share() и enableTableShareAndPersistence().

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

  • Проверка добавления данных в таблицы потоков была улучшена.

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

    t = streamTable(1:0, `id`val, [INT, INT])
    enableTableShareAndPersistence(t, `st)
    go
    data1 = table(1..10 as id, 11..20 as val)
    t.append!(data1)
    addColumn(st, `price, DOUBLE)
    t.append!(data1)
    data2 = table(1..10 as id, 11..20 as val, 21..30 as price)
    t.append!(data2)
    t.append!(data1)
    //С этой версии скрипт выше вызовет ошибку: Количество столбцов таблицы для вставки должно совпадать с количеством столбцов исходной таблицы.
    //В предыдущей версии скрипт выполнялся без ошибок.

- Функция `distinct` не может быть вложена с другой агрегатной функцией в SQL-запрос, применяемый к таблице DFS.

- При передаче оператора SELECT или EXEC функции с как минимум двумя аргументами будет выдана ошибка синтаксического анализа, поскольку запятая (,) может быть интерпретирована как CROSS JOIN. Необходимо добавить пару скобок для разделения оператора от других параметров.

    ```
    mr(sqlDS(<select * from pt>),x->select top 1 * from x,,unionAll{,false})
    // Скрипт ниже можно проанализировать правильно.
    mr(sqlDS(<select * from pt>),(x->select top 1 * from x),,unionAll{,false})

    n=1000
    t1=table(rand(100, n) as id, rand(100, n) as val)
    t2=table(rand(100, n) as id, rand(100, n) as val)

    re3=select * from t1  where val in select val from t2, val gt select first(val) from t2 where id = 1
    // Скрипт ниже можно проанализировать правильно.
    re3=select * from t1  where val in (select val from t2), val gt (select first(val) from t2 where id = 1)
    ```

- Определённые псевдонимы столбцов в предложении SELECT больше нельзя использовать в предложении WHERE. Это поведение соответствует стандартной семантике SQL.

    ```
    id = [1, 1, 2, 6, 8, 3, 2, 5, 3, 8]
    v1 = take(1..5, 10)
    t = table(id as `id, v1 as `v1)
    re1 = select id as i from t where i > 1

    // В версии 1.30.21/2.00.9 приведённый выше SQL-оператор можно успешно выполнить.
    // Начиная с этой версии, будет выдано сообщение об ошибке: Нераспознанное имя столбца i
    ```

- Теперь, когда значение NULL нельзя сопоставить другому значению NULL, при вставке записей с помощью функции `upsert!`, если исходный столбец таблицы и столбец вставляемой таблицы содержат значения NULL, возвращается новая запись.

    ```
    n=5
    t1 = table(n:n,`date`id`sym,[DATE,INT,STRING])
    t1[`date] = take((2020.05.01..2020.05.05),n)
    t1[`id] = take(int(),n)
    t1[`sym] = "A"+string(1..n)
    login("admin", "123456")
    dbPath = "dfs://upsert_test"
    if(existsDatabase(dbPath))
    dropDatabase(dbPath)
    db = database(dbPath, VALUE, 2020.05.01..2020.05.10)
    pt = db.createPartitionedTable(t1, `pt, `date).append!(t1)
    login("admin", "123456")
    pt = loadTable("dfs://upsert_test", "pt")
    newdata=table(take(2020.05.01..2020.05.05,5) as date,take(int(),5) as id,"B"+string(1..5) as sym)
    pt.upsert!(newdata,true,`id)
    select * from pt
    // Предыдущие версии возвращали пять записей.
    // С этой версии возвращаются десять записей.
    ```

- Добавлена проверка для `upsert!`: количество столбцов newData должно соответствовать количеству столбцов исходной таблицы. В предыдущих версиях можно было вставить таблицу с меньшим количеством столбцов.

- Будет выдана ошибка при фильтрации данных с условием where в столбцах секционированной таблицы.

    ```
    login("admin","123456")
    if(existsDatabase("dfs://test_in")){
        dropDatabase("dfs://test_in")
    }
    db=database("dfs://test_in", VALUE, 2015.01M..2016.01M)
    t=table(take(2015.01M..2016.01M,10000) as date, 1..10000 as id, rand(100,10000) as v)
    db.createPartitionedTable(t,`pt,`date).append!(t)
    temp_t = db.loadTable(`pt)
    select distinct date from temp_t where date in temporalAdd(date, 2M) 
    // Выдаётся сообщение об ошибке: Нельзя использовать предикат 'in' с столбцами секционированных таблиц в условии where, пожалуйста, используйте подзапрос для этого.
    // SQL-оператор с подзапросом после «in» можно выполнить правильно
    select distinct date from temp_t where date in select temporalAdd(date, 2M) from temp_t
    ```

- Правая таблица `wj`/`pwj` не может быть таблицей DFS.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dolphindb-release.git
git@api.gitlife.ru:oschina-mirror/dolphindb-release.git
oschina-mirror
dolphindb-release
dolphindb-release
master