Git Product home page Git Product logo

taos-connector-csharp's People

Contributors

dependabot-preview[bot] avatar huskar-t avatar maikebing avatar pigwing avatar rennner avatar sangshuduo avatar winnyrain avatar zengchenri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taos-connector-csharp's Issues

ToDataTable报错

当查询的数据不含有第一列,也就是主键列(TIMESTAMP),会报一下错误:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

数据库连接错误

` using (TaosConnection conn = DataBase.TDConnect())
{
conn.Open();
#region 原始数据数据插入
string tableName = "a_" + channels.AcquisitSerialNumber + "" + channels.ChannelNumber + "" + channels.SampleRate;
int channleId = int.Parse(channels.ChannelNumber.Replace("AI", ""));
StringBuilder stringBuilder = new StringBuilder();
long timestamp = GetTimestamp(DateTime.Now);
int rows = (count / 15000) + (count % 15000 == 0 ? 0 : 1);
switch (channels.ChannelNumber)
{
case "AI0":
for (int j = 0; j < rows; j++)
{
int oneRow = j == rows - 1 ? count % 15000 : 15000;
for (int i = 0; i < oneRow; i++)
{
double orginal = 0;
while (!Params.CKDataPackagelist[channels.AcquisitSerialNumber].AI0.TryDequeue(out orginal)) ;

                                stringBuilder.Append("(" + timestamp + "," + orginal + ")");
                                timestamp++;
                                doubles[j * 15000 + i] = orginal;
                            }
                            conn.CreateCommand("insert into " + tableName + " using acceleration TAGS ('" + channels.AcquisitSerialNumber + "','" + channels.ChannelNumber + "'," + channels.SampleRate + ") VALUES " + stringBuilder).ExecuteNonQuery();
                            stringBuilder.Clear();
                        }
                        break;                      
                    default:
                        break;
                }
                _logger.LogTrace($"{DateTime.Now.TimeOfDay}:{channels.ChannelNumber}数据插入成功");
                conn.Close();
            }`

多线程调用该方法,两秒钟调用一次,每次插入六万条数据;
使用版本:2.0.478
错误日志:
image

出现这个错误的原因可能是什么?

Connection Open报错

飞书20220829-085326
查询有几率报上述错误,经检查定位到最终的错误代码可能是在TaosConnection 的203行的Open方法报的错,能给排查下具体是什么问题导致的吗?

为何我在使用ADO.NET查询数据时,数据已查询出来在程序中却获取不到

image
以下是我的代码
using (var connection = new TaosConnection(builder.ConnectionString)) { connection.Open(); var cmd_select = connection.CreateCommand(); cmd_select.CommandText = $"select last_row(*) from {_tdengineConfig.DbName}.{tableName}"; using (var reader = cmd_select.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { foreach (var item in codes) { ls.Add(item, reader[item]); } } } } }

查询仅返回4096行数据

TDengine版本:3.0.2.4
sql:select * from meters limit 1000000

使用如下代码查询

static void Main(string[] args)
{
	var connectionStringBuilder = new TaosConnectionStringBuilder
	{
		DataSource = "10.32.3.33",
		Port = 6041,
		Username = "root",
		Password = "taosdata",
		DataBase = "test"
	};
	connectionStringBuilder.UseWebSocket();
	using var connection = new TaosConnection(connectionStringBuilder.ConnectionString);
	connection.Open();
	using var command = connection.CreateCommand();
	command.CommandText = "select * from meters limit 1000000";
	var reader = command.ExecuteReader();
	var result = reader.ToDataTable();
	Console.WriteLine(result.Rows.Count); // print 4096
}

返回数据行只有4096?

建议 EnsureCreated 使用语句 IF NOT EXISTS

我看源码是检测 table 或者 database 是否已经存在,如果存在则不创建,不存在则创建。但是我发现再执行时我这里存在几个问题。

数据库服务我装的是 docker 版本 1.6.5.9

  1. 建库或者建表的时候直接使用 IF NOT EXISTS 语句来建,数据库本身会自动检测是否存在,不存在则建表。我通过你的接口发现 SHOW DATABASES 能获取到表的原始数据,但是反序列化后所有为 string 的字段结果为 null,如: name 与 status,但是 stable 这些能获取到正确的数值。所以导致你在检测库是否存在的时候出现错误,也就是明明存在库,你获取不到库的名称。

  2. 不知道你是否存在这种故障,建完库与表之后,后面的插入语句无法执行,提示已经与数据库断开了。

还有一个疑问就是,因为我不懂,请问使用 taos.dll 引用方式在 linux 平台可以使用吗?因为在我的思维里面貌似 NF 才能引用 win32 的dll,linux 下的库应该与 win 下不一样吧。

插入数据到表中报错

M`9IIU ND_ }DZD}4DMTQ
image
TDengineServer版本:2.2.1.3
用EfCore.Taos中的例子做测试,ServerVersion打印出来了,表也建好了,就是数据没插进去,报异常 unable to resolve fqdn,但是我ping fqdn是能ping通的,是我哪里有问题呢?

IoTSharp.Data.Taos.TaosCommand内存问题

从老版本Maikebing.Data.Taos更新到新的IoTSharp.Data.Taos后,程序内存一直涨降不下来,使用Windbg分析了一下dump文件 发现
00007ffe8de93548 2705 129840 System.Text.StringBuilder
00007ffe8e42b5d8 2 161344 System.Int64[]
00007ffe8dc96860 1943 229792 System.Object[]
00007ffe8dd57a90 10176 1005538 System.String
00007ffe8de16e18 3686 1147906 System.Char[]
00007ffe8e428c60 377 1517048 GatewayServer.TDengineConsumer.rtags[]
000000be0a5a0440 1495 2013680 Free
00007ffe8e4fe038 3 2129992 System.WeakReference1[[IoTSharp.Data.Taos.TaosCommand, IoTSharp.Data.Taos]][] 00007ffe8dd9bf30 5799 4081100 System.Byte[] 00007ffe8e4fc8e8 216800 5203200 System.WeakReference1[[IoTSharp.Data.Taos.TaosCommand, IoTSharp.Data.Taos]]
有多大20w的taosCommand个对象未释放,请教下 是和这个有关系吗。
程序只是从老版本更新了这个驱动,其他的逻辑基本没变化。

内存会泄露

您好,
在使用时发现内存泄露的情况,我写了一个timer,每20秒查询一次,发现查询完成后,内存也会随之变大,无法释放。
image
image

从一开始的42 后面 每查询一次就内存就变大。

STABLE如何处理?

请教作者,有没有考虑TDENGINE里STABLE的概念,如果在 Entity Framework Core 代码里有没有对应?

数据订阅

作者你好,什么时候考虑支持数据订阅功能呢?

版本升级后插入数据失败

在升了.NET6的驱动版本(IoTSharp.EntityFrameworkCore.Taos V2.0.453)后,插入报错,请问是什么问题(测试之前的Maikebing.EntityFrameworkCore.Taos版本没问题)
image

内存泄露

你好,作者,我在使用过程中发现,执行sql一直报错的话,非托管内存持续增长

参数装配部分存在的问题

1.将参数名直接替换为“?”不合适,如果 有@p1@p10两个参数,第一个参数装配时,就会将@p1替换为"?",同时将@p10替换为"?0"
2.已提交语句后,再更改commandText或许不适宜,应在更改后再提交
3.同一参数名在一个语句中多次使用时,需要对同一个参数多次装配,也就是说参数个数与TAOS_MULTI_BIND个数可能并不一致

Group支持吗?

怎么用EFCoreGroupBy

var queryable = await SprResultRepository.GetQueryableAsync();

var query = queryable.GroupBy(x => new { x.DeviceName, x.ProgNo, x.Quality })
    .ToList();

上面的语句报错:

 Unable to translate the given 'GroupBy' pattern. Call 'AsEnumerable' before 'GroupBy' to evaluate it client-side.

不会吧!GroupBy难道只能在客户端实现吗?

2.0.353执行SQL时导致内存操作错误?

CreateCommand时报以下错误:
System.AccessViolationException
HResult=0x80004003
Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Source=<无法计算异常源>
StackTrace:
<无法计算异常堆栈跟踪>
换回2.0.304后正常。
另外,根据2.0.2.0提供的新的客户端接口函数taos_subscribe、taos_insert_lines、taos_open_stream能否增加新的功能?例如采用类似SqlBulkCopy函数实现数据批复制,方便数据迁移或备份恢复?

查询TD 3.0有问题

什么时候支持TD 3.0 尝试用现有类库去获取表所有列,只能返回首列。
TD2.6是正常。

怎么使用时间聚合函数INTERVAL

select first(value) from iot_datas where ts>'2021-06-09 10:01:00' and ts<'2021-06-09 11:00:00' and tbname in ('iot_data_319400013') INTERVAL(9m,4m) FILL(NULL) limit 10;
这种sql怎么通过linq写,或者是其他方式实现

configDir参数增加文件是否存在判断和外部配置的建议

问题:

使用Schemaless 写入模式,在客户端配置了smlChildTableName tname,使用c#写入st,tname=cpu1,t1=4 c1=3 1648432611250时,还是产生随机的子表名,

版本:
V3.0.1.6

问题分析:

8e6e2efc83de6662de177c241c4636b

初始化时默认Windows环境配置文件路径为 configDir = "C:/TDengine/cfg"; 为了方便部署所有将配置文件放到程序运行目录,避免每个用户都需要安装

解决建议:
1、通过文件判断当前程序目录中是否有配置文件,如果有优先使用程序目录对应配置。
2、通过文件判断C:/TDengine/cfg是否存在配置文件,无对应配置文件,初始化抛异常提示。
3、支持外部指定configDir 参数的路径

rest api 方式每次只能传递一条 sql 语句

如题: 我使用你写的这个库做了测试, 发现每次只能传递一条sql语句, 无聊是 insert into 还是 import into, 这样的话, 对于设备频繁上送的报文, 使用 rest api 一遍遍的调用怕是性能还不如传统的关系型数据库了!
这个问题是, TDengine 本身rest api每次只能接受一条 sql 语句还是什么您的库的问题了?

关于空nchar类型的序列化BUG!

DataReaderExtensions

public static string RemoveNull(this string str)
{
    return (!string.IsNullOrEmpty(str) &&  str.IndexOf('\0')>0)? str.Remove(str.IndexOf('\0')):str;
}

这里的RemoveNull在对空nchar字段数值(c#取出的是长度为n的\0,对应的str为)原样返回,导致通过取出的字符串作为where条件向td进行查询时字符串被截断而引发异常。 对于这种情况期望的返回结果应该是string.Empty

可以用如下的代码进行测试:

byte[] bf = new byte[128];
var s = System.Text.Encoding.GetEncoding(936).GetString(bf)?.RemoveNull(); // 应该返回 string.empty

项目中的.dll和.so的用途,有没有比较去掉?

现在涛思官方提供的客户端驱动要求必须服务器版本唯一匹配,而项目中包含的驱动库taos.dll(.so) 好像也没有什么用,是否可以考虑从项目中去掉并且自动从驱动安装目录中加载?

schemaless

  • postman 已经实现并完成。
  • 代码实现
  • 测试代码

#243

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.