DolphinDB Release Notes
Для каждой версии доступны следующие файлы:
Файлы доступны для скачивания по следующим ссылкам:
Здесь x — номер версии (от 0 до 9). 1.10.3
1.10.4
1.10.5
1.10.6
1.10.7
1.10.8
1.10.9
1.10.11
1.10.13
1.10.16
1.10.17
Улучшения
Параметры rowIndex и colIndex функции slice теперь поддерживают массивы.
Улучшена производительность определённых операторов «контекст по» примерно в 5–10 раз.
Повышена производительность высокоуровневой функции moving примерно на 20%.
Увеличена стабильность DFS и RAFT.
Улучшена производительность фильтрации «in» при запросе ключевой таблицы с несколькими ключами.
Пустой подмассив можно получить, указав одно и то же значение для начала и конца. В функции subarray в языке программирования [название языка] теперь можно оставить пустым начальное или конечное положение подмассива. Например: subarray(x, 2 :) или subarray(x,: 5). (1.10.2)
[В языке программирования [название языка], параметр 'input' функции iterate может содержать значения NULL. Значение NULL обрабатывается как 0 при расчётах. (1.10.3)]
Улучшена производительность функции iif. В большинстве случаев производительность может быть увеличена вдвое. (1.10.4)]
Функция loadText поддерживает файлы с возвратом каретки ('\r') в качестве разрывов строк. (1.10.4)
При использовании пустой строки в качестве IP-адреса больше не генерируется исключение, а возвращается пустой IP-адрес. (1.10.4)
Для функций char, short, int, long, float и double, если входная строка пуста или не является числовым значением, вместо 0 возвращается значение NULL. (1.10.4)
Если при выполнении функции restore возникает ошибка, генерируется исключение. (1.10.4)
Функция migrate может восстановить все базы данных и таблицы в папке резервных копий. (1.10.4)
Если последний символ параметра, указывающего путь к базе данных в функциях dropDatabase и existsDatabase, является косой чертой или обратной косой чертой, он будет автоматически удалён. (1.10.4)
Если вход функции rank представляет собой пустой вектор, она возвращает пустой вектор вместо генерации исключения. (1.10.5)
Когда параметр forceDelete функции dropPartition установлен в true, удаление раздела разрешено, даже если количество копий указанного раздела равно 0. (1.10.5)
Генерируется исключение, если параметр partitionPaths функции dropPartition указывает условия фильтрации и содержит значение NULL. (1.10.5)
Добавлено ограничение, согласно которому функции, связанные с операциями базы данных DFS (включая addValuePartitions, addRangePartitions, append!, createPartitionedTable, createTable, database, dropDatabase, setColumnComment, setRetentionPolicy и tableInsert), могут выполняться только на узлах данных. (1.10.5)
Если ветвь if или else оператора if/else содержит недопустимые компоненты, генерируется исключение. (1.10.5)
Максимальное количество автоматически сгенерированных идентификаторов заданий, префикс которых совпадает со значением jobId и сегодняшней датой, увеличено с 1000 до 10 000, когда одно и то же значение параметра jobId используется повторно при отправке заданий с помощью функции submitJob. (1.10.6)
Операторы обновления и удаления SQL теперь поддерживают скалярные логические выражения, такие как 1 = 1 или 1 = 0. (1.10.7)
В таблице, возвращаемой getStreamingStat.subWorkers о рабочих узлах подписчиков, каждая строка представляет тему подписки. (1.10.7)
При отмене подписки на потоковую таблицу (unsubscribeTable) все сообщения темы в очереди сообщений потока выполнения будут удалены. (1.10.7)
Запрещено использовать функции, результаты которых чувствительны к порядку строк, такие как mavg, isDuplicated и т. д., в предложении where, если оператор SQL затрагивает несколько разделов таблицы. (1.10.7)
Теперь функция sqlColAlias поддерживает составные столбцы. (1.10.7)
В операторе SQL context by или group by, если в расчёте отдельной группы возникает ошибка из-за данных (например, вычисление инверсии сингулярной матрицы), результат группы устанавливается равным Null, и оператор успешно выполняется. Система больше не генерирует исключение для прерывания выполнения. (1.10.7)
При очистке постоянных данных с помощью функции clearTablePersistence система больше не препятствует доступу других функций (таких как getStreamingStat) к менеджеру персистентности. (1.10.7)
Функции rank и mrank улучшены. Добавлены необязательные параметры ignoreNA и tiesMethod. Параметр ignoreNA игнорирует нулевые значения. Параметр tiesMethod определяет способ ранжирования записей с одинаковым значением. Теперь он поддерживает min, max и average. (1.10.8)
Усовершенствована проверка параметров функции dropPartition. Если пути раздела содержат повторяющиеся значения, возникает ошибка. 1.10.13
В функцию getSessionMemoryStat
добавлены 2 столбца: «createTime» и «lastActiveTime», которые записывают время создания сессии и время последнего доступа соответственно. Также было исправлено значение столбца «remotePort».
В функцию getConsoleJobs
добавлены 2 столбца: «remoteIP» и «remotePort».
Функция backup
теперь поддерживает параллельное резервное копирование для повышения эффективности.
При присвоении константы переменной будет копироваться объект, чтобы избежать снижения эффективности системы из-за одновременного изменения счётчика ссылок во время многопоточных параллельных вычислений.
Улучшена стабильность реализации протокола консенсуса RAFT.
Использован TCMalloc для управления пулом в памяти, что улучшило эффективность выделения памяти, особенно небольших объёмов памяти во время многопоточных параллельных вычислений. Одновременно были решены две проблемы: ситуация, когда фактическая память, занимаемая DolphinDB, превышает установленное значение параметра конфигурации maxMemSize, и проблема OOM, когда при создании строки остаётся ещё память.
1.10.14
saveText
максимальная точность переменной типа double сохраняет 15 цифр.pca
, так как она изменена для использования алгоритма svd библиотеки lapack.logisticRegression
.1.10.15
1.10.16
1.10.17
Исправления ошибок
Производительность функции backup
ухудшается после некоторого времени работы.
Проблема нехватки памяти при одновременном чтении распределённой таблицы может вызвать взаимоблокировки.
Когда функция sum
или avg
используется в функции createTimeSeriesAggregator
и все строки в группе содержат значения NULL, результатом должен быть NULL вместо 0.
Исправлена ошибка в вычислении sum
или avg
, используя подход хеширования в операторах SQL. Если все строки в группе содержат значения NULL, результат должен быть NULL, а не 0.
В версии Windows сервера DolphinDB закрытие клиентской подписки приводило к тому, что другие подписчики на том же узле не могли принимать новые сообщения.
Исправлены ошибки синтаксического анализа для строк, заканчивающихся на '\\', например, «hello\\». Теперь исключение не выбрасывается.
Если функция в модуле используется в запланированном задании, модуль нельзя использовать после перезапуска сервера.
В линейном программировании (функция linprog
) накопление ошибок округления в итерациях может привести к неправильным результатам. Сортировка массивов строк и нестроковых последовательностей. Это может привести к некорректной работе функции isortTop (1.10.1).
Система регистрировала дублирующие функции модуля, когда файл модуля выполнялся в консоли или GUI несколько раз. Это могло привести к сбою системы или выбросу исключений (1.10.1).
Удалён ненужный вывод в консоль в определённых ситуациях, когда функция slice применяется к матрице (1.10.1).
Исправлена ошибка, приводящая к сбою в Windows JIT-версии. Система могла аварийно завершать работу, если пользовательская JIT-функция выбрасывала исключение (1.10.1).
Функция update! при использовании с несколькими условиями фильтрации генерирует некорректный результат (1.10.2).
Исправлена ошибка, которая вызывала исключения после вставки пустой таблицы в пустую таблицу измерений (1.10.2).
Исправлена ошибка в функции iterate. Система могла ошибочно определить, что параметр input содержит значение Null, что приводило к ошибке проверки параметра (1.10.2).
Исправлена ошибка в функции array. Для массива типа FLOAT или DOUBLE, если параметру defaultValue функции array присвоено значение от 0 до 0,5, элементам массива будет ошибочно присвоено значение 0 (1.10.3).
Исправлена ошибка, появившаяся в версии 1.10.0. Когда некоторые столбцы в SQL-запросе явно или неявно используют один и тот же псевдоним, система аварийно завершает работу (1.10.3).
Исправлена ошибка использования order by после context by или group by. Если поле, которое должно быть отсортировано, уже находится в порядке, указанном пользователем (нет необходимости переставлять), сгенерированный результат запроса (таблица в памяти) будет продолжать использоваться для вычислений. Поля могут давать неверные результаты (1.10.4).
Результат функции trueRange в SQL-запросе с предложением context by может быть некорректным (1.10.4).
Исправлена ошибка, появившаяся в версии 1.10.0. При удалённом вызове функции частичного приложения в API или с помощью функции remoteRun, если во время построения функции частичного приложения возникает исключение, система может аварийно завершить работу (1.10.4).
Исправлена ошибка, появившаяся в версии 1.00.6. Функции loadText, ploadText и loadTextEx генерируют некорректный результат при загрузке строк, представляющих типы DOUBLE или FLOAT, начинающиеся с '.' или '-'. Например, '.12' и '-.12' неправильно анализируются как 12 (1.10.4).
Функция convertEncode не работает в Linux-версии (1.10.5).
Когда параметру msgAsTable функции subscribeTable присваивается значение false, и если только одно сообщение в новом пакете удовлетворяет условию фильтрации, клиенту отправляется сообщение, которое не обязательно удовлетворяет условию фильтрации (1.10.5).
Выполнение агрегатных функций с разделёнными таблицами может вызвать ошибку повторяющихся имён столбцов. Например, если MapReduce используется при выполнении оператора group by с разделённой таблицей, имена промежуточных столбцов — «col» + число, например «col1», «col2» и т. д. Если столбец группы случайно имеет то же имя, что и промежуточный столбец, создаётся сообщение об ошибке повторяющихся имён столбцов (1.10.5).
Функция loadText может в редких случаях анализировать тип DOUBLE как тип DATE (1.10.5).
Исправлена утечка памяти при удалении всех данных общей таблицы в памяти, если хотя бы один столбец в таблице является большим массивом (1.10.6).
Если тип переменной не может быть определён в JIT-версии, ошибки могут возникать во время компиляции, что приводит к сбоям или снижению эффективности выполнения. После исправления ошибки, если тип переменной не может быть определён, компиляция будет прервана, а имя переменной будет сообщено (1.10.6).
Исправлена ошибка, появившаяся в версии 1.10.3. Если ключи словаря имеют тип LONG, а значения — тип ANY, поиск по словарю ключа может некорректно вернуть ничего (1.10.6).
Исправлена ошибка, которая могла привести к сбою при выполнении равного соединения (ej) двух общих таблиц в памяти. Система может аварийно завершиться, если один поток удаляет все данные из двух общих таблиц в памяти и затем добавляет новые данные, а другой поток выполняет равное соединение с ними с несколькими столбцами соединения. В данном тексте описаны различные проблемы и ошибки, которые были исправлены в версии 1.10.6 и последующих версиях.
Текст описывает технические аспекты разработки и тестирования программного обеспечения, но не содержит специфической терминологии или кода, требующих специальных знаний для понимания.
Исправлена ошибка в функции createCrossSectionalAggregator, когда параметр triggeringPattern установлен в «interval». Расчёт запускается не только через заданные интервалы, но и возможно каждый раз при вставке данных.
Исправлена ошибка, которая могла привести к сбою системы, если параметры частичного применения в вызове RPC-функции не используют правильный формат.
Если SQL-запрос с несколькими условиями OR, содержащими как столбцы секционирования, так и несекционированные столбцы в предложении where, применяется к таблице со схемой секционирования значений, результат может содержать больше строк, чем ожидалось.
Функция wsum возвращает 0, когда оба параметра содержат только значения Null. Теперь она возвращает значение Null.
Когда в функции sql указаны оба параметра «csort» и «limit», сгенерированный SQL-оператор не может найти столбцы, указанные параметром «csort».
При использовании алгоритма хеширования для выполнения агрегатных функций в группах в SQL-операторах, если результат содержит значения Null, система не устанавливает флаг значения Null. Поэтому, если результаты дополнительно фильтруются функцией isNull, система не может обнаружить значения Null.
Если алгоритм хеширования используется для выполнения агрегатной функции wsum в групповых вычислениях SQL, и оба входа функции wsum равны Null, результатом должен быть Null вместо 0.
Исправлена ошибка, появившаяся в версии 1.10.7. При наличии нескольких потоковых исполнителей выполнение getStreamingStat приведёт к сбою системы.
Устранена утечка памяти, вызванная выделением более 2 ГБ непрерывной памяти.
При одновременном выполнении нескольких пакетных заданий, вызывающих mr или imr, если возникает исключение (например, раздел заблокирован другой транзакцией и не может быть записан), это может привести к сбою системы.
Когда агрегатор временных рядов выполняет групповые вычисления с useSystemTime=true, если в окнах нет данных, результаты вычислений генерируются ошибочно.
Исправлена ошибка во встроенной параллельной хеш-таблице. Эта ошибка может вызвать сбой системы при создании и доступе к общим переменным одновременно.
База данных DFS с несколькими уровнями каталогов (например, dfs://stock/valueDB) не может быть должным образом зарезервирована и восстановлена.
В равном соединении, если тип данных соединяемого столбца — STRING в левой таблице и SYMBOL в правой таблице, и если правая таблица имеет только одну строку, результат будет неверным, поскольку он всегда возвращает пустую таблицу.
При объединении таблицы DFS и таблицы измерений, если все следующие условия выполняются: (1) ни одна запись не удовлетворяет условиям соединения; (2) подстановочный знак (*) используется в предложении select; (3) имя таблицы DFS и псевдоним таблицы, используемые при объединении, различаются; (4) в обеих таблицах есть столбец с одинаковым именем, тогда система выдаст исключение о том, что она не может найти столбец с таким же именем в обеих таблицах.
Результаты ошибочны, когда большой словарь сериализуется асинхронно.
После включения высокой доступности для узла контроллера, если транзакция включает слишком много разделов, чтобы длина сообщения RAFT превышала 64 КБ, метаданные будут усечены при воспроизведении сообщения RAFT после перезапуска системы.
Если в операторе SQL есть предложение WHERE, а в предложении GROUP BY содержится несколько полей, и второе или последующее поле в предложении GROUP BY использует функцию segment, результат не соответствует ожидаемому.
Когда все элементы вектора идентичны, результаты функций mvar и cumvar могут иметь чрезвычайно малые отрицательные значения; результаты функций mstd и cumstd могут иметь значения NULL.
Может произойти утечка памяти во время подключения через сокет.
Функция adaBoostRegressor может аварийно завершиться при определённых обстоятельствах.
После добавления узла данных в кластер высокой доступности. Онлайн, создание нового раздела базы данных на новом узле может привести к сбою нового узла. (1.10.13)
При использовании JSON для выполнения веб-вызовов, если тег «functionName» не указан, узел может аварийно завершить работу. Это может произойти при использовании Grafana для доступа к DolphinDB. (1.10.14)
При использовании функции fromJson
для обработки строк JSON, если тег 'value' не включён, узел может аварийно завершиться. (1.10.14)
Исправлена ошибка в реализации контрольной точки моментального снимка RAFT. Это может привести к особенно длительному переключению лидера. (1.10.14)
Если параметр конфигурации newValuePartitionPolicy=add (позволяющий системе автоматически добавлять разделы значений), когда несколько одновременных потоков записи добавляют большое количество новых разделов за короткий промежуток времени (обычно в стресс-тесте или среде разработки), может произойти потеря раздела, т. е. данные, записанные в базу данных, не могут быть запрошены. (1.10.15)
Когда новые значения функций replace
или replace!
являются числами с плавающей запятой, дробная часть будет игнорироваться, что приведёт к некорректным результатам. (1.10.15)
Исправлена ошибка, из-за которой использование секционированных таблиц в памяти в качестве источника данных функций mr
или imr
приводило к аварийному завершению работы системы. (1.10.15)
При просмотре данных в DFS Explorer веб-кластера менеджера доступ пользователя не включён. (1.10.16)
Использование функции median
в соединении окон может привести к аварийному завершению работы системы, если входные данные содержат значения Null. (1.10.17)
Когда в соединении окон используется несколько агрегатных функций, и оптимизированные агрегатные функции (такие как avg
, sum
, min
, max
, last
, first
, med
, beta
и т. д.) расположены после неоптимизированных агрегатных функций, система аварийно завершит работу. (1.10.17)
Использование функции cumrank
может привести к аварийному завершению работы. (1.10.17)
Если последний символ ввода функции split
является разделителем, последняя пустая строка не включается в результат. (1.10.17)
Когда SQL-запрос с предложением map применяется к распределённой таблице с одним разделом, ошибочно возвращается пустая таблица. (1.10.17)
Использование функции sqlDS
для создания таблицы измерений, в которую ещё не были записаны данные, в качестве источника данных для функции mr
, приведёт к аварийному завершению работы системы. (1.10.17)
Исправлено периодическое возникновение проблемы параллелизма во время инициализации системы. Эта проблема вызовет исключение, подобное «Нет соответствующего BinaryBooleanOperator, определённого для gt». (1.10.17)
Улучшения
Исправления ошибок
loadHDF5Ex
для поддержки пользовательского преобразования данных. (1.10.15)Улучшения
Улучшения
Исправление ошибок
Загрузка numpy.matrix на сервер DolphinDB приводит к сбою. (0.1.15.20)
Проверяется, являются ли метки столбцов DataFrame действительными. (0.1.15.20)
Исключения генерируются в Python API, когда метод сеанса loadTable
используется для загрузки указанных разделов. (0.1.15.23)
Добавлена поддержка типов данных ipaddr, uuid и int128. (0.1.15.23)
Добавлена поддержка массивов типа month. (0.1.15.23)
Добавлена функция hashBucket
. (0.1.15.23)
Orca: исправлена проблема вычислительных ошибок в функции rolling
, когда тип ввода — float32 со значениями nan. (0.1.15.23)
Orca: Исправлена проблема ошибочной ошибки. Сообщение при использовании read_table
для загрузки распределённой таблицы. (0.1.15.23)
Выпущена версия 1.20.2.0 для DolphinDB 1.20.2; версия 1.10.12.0 для DolphinDB 1.10.12; версия 1.0.24.1 для DolphinDB 1.00.24. Пожалуйста, убедитесь, что вы используете соответствующий Python API и версию orca в зависимости от версии сервера DolphinDB.
Добавлена поддержка Python 3.8. (1.20.4.0, 1.10.15.0, 1.0.24.2)
Добавлены нативные методы для создания баз данных DolphinDB и секционированных таблиц. (1.20.4.0, 1.10.15.0, 1.0.24.2)
Повышена эффективность преобразования фреймов данных pandas в объекты таблиц DolphinDB. (1.30.0.0, 1.20.5.0, 1.10.16.0)
Дополнительно повышена эффективность преобразования фреймов данных pandas в объекты таблиц DolphinDB. (1.30.0.1, 1.20.6.0, 1.10.17.0)
Конструктор класса Session добавляет необязательные параметры: enableSSL (шифрование) и enableASYN (асинхронность), значение по умолчанию — False. Например: s=ddb.Session(enableSSL=True, enableASYN=True). Когда enableSSL равно True, на стороне сервера необходимо добавить параметр enableHTTPS=true (стабильная версия Linux64>=1.10.17, последняя версия>=1.20.6), чтобы успешно установить соединение. Когда асинхронная связь включена, поддерживается только метод session.run, и нет возвращаемого значения, что подходит для асинхронной записи данных. (1.30.0.1, 1.20.6.0, 1.10.17.0)
Новые функции
Исправления ошибок
Новые функции
Улучшения
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )