Update QuestDb

This commit is contained in:
sunkaixuan
2022-07-30 14:57:59 +08:00
parent 97c84ab88b
commit 879e9dcfcb
5 changed files with 78 additions and 79 deletions

View File

@@ -117,8 +117,8 @@ namespace SqlSugar
new KeyValuePair<string, CSharpDataType>("bit varying",CSharpDataType.byteArray), new KeyValuePair<string, CSharpDataType>("bit varying",CSharpDataType.byteArray),
new KeyValuePair<string, CSharpDataType>("varbit",CSharpDataType.@byte), new KeyValuePair<string, CSharpDataType>("varbit",CSharpDataType.@byte),
new KeyValuePair<string, CSharpDataType>("time",CSharpDataType.TimeSpan), new KeyValuePair<string, CSharpDataType>("time",CSharpDataType.TimeSpan),
new KeyValuePair<string, CSharpDataType>("public.geometry",CSharpDataType.@object), //new KeyValuePair<string, CSharpDataType>("public.geometry",CSharpDataType.@object),
new KeyValuePair<string, CSharpDataType>("inet",CSharpDataType.@object) new KeyValuePair<string, CSharpDataType>("geohash",CSharpDataType.@string)
}; };
public override List<string> StringThrow public override List<string> StringThrow
{ {

View File

@@ -129,6 +129,14 @@ namespace SqlSugar
sqlParameter.DbType = System.Data.DbType.Double; sqlParameter.DbType = System.Data.DbType.Double;
sqlParameter.Value = Convert.ToDouble(sqlParameter.Value); sqlParameter.Value = Convert.ToDouble(sqlParameter.Value);
} }
else if (sqlParameter.DbType == System.Data.DbType.Guid)
{
sqlParameter.DbType = System.Data.DbType.Double;
if (sqlParameter.Value != null)
{
sqlParameter.Value = (sqlParameter.Value).ToString();
}
}
++index; ++index;
} }
return result; return result;

View File

@@ -24,14 +24,14 @@ namespace SqlSugar
{ {
get get
{ {
return "current_date"; return "now()";
} }
} }
public override string FullSqlDateNow public override string FullSqlDateNow
{ {
get get
{ {
return "select current_date"; return "select now()";
} }
} }

View File

@@ -7,7 +7,7 @@ namespace SqlSugar
public SqlSugarProvider Context { get; set; } public SqlSugarProvider Context { get; set; }
public QuestDBExpressionContext() public QuestDBExpressionContext()
{ {
base.DbMehtods = new PostgreSQLMethod(); base.DbMehtods = new QuestDBMethod();
} }
public override string SqlTranslationLeft public override string SqlTranslationLeft
{ {
@@ -133,40 +133,61 @@ namespace SqlSugar
} }
public class QuestDBMethod : DefaultDbMethod, IDbMethods public class QuestDBMethod : DefaultDbMethod, IDbMethods
{ {
public override string TrueValue() //public override string DateIsSameByType(MethodCallExpressionModel model)
//{
// var parameter = model.Args[0];
// var parameter2 = model.Args[1];
// var parameter3 = model.Args[2];
// return string.Format(" (DATEDIFF('{2}',{0},{1})=0) ", parameter.MemberName, parameter2.MemberName, parameter3.MemberValue);
//}
public override string Contains(MethodCallExpressionModel model)
{ {
return "true"; var parameter = model.Args[0];
} var parameter2 = model.Args[1];
public override string FalseValue() return string.Format(" ({0}~{1} ) ", parameter.MemberName, parameter2.MemberName);
{
return "false";
} }
public override string DateDiff(MethodCallExpressionModel model) public override string DateDiff(MethodCallExpressionModel model)
{ {
var parameter = (DateType)(Enum.Parse(typeof(DateType), model.Args[0].MemberValue.ObjToString())); var parameter = model.Args[0];
var begin = model.Args[1].MemberName; var parameter2 = model.Args[1];
var end = model.Args[2].MemberName; var parameter3 = model.Args[2];
switch (parameter) return string.Format(" DATEDIFF('{0}',{1},{2}) ", parameter.MemberValue.ObjToString().First(), parameter2.MemberName, parameter3.MemberName);
{
case DateType.Year:
return $" ( DATE_PART('Year', {end} ) - DATE_PART('Year', {begin}) )";
case DateType.Month:
return $" ( ( DATE_PART('Year', {end} ) - DATE_PART('Year', {begin}) ) * 12 + (DATE_PART('month', {end}) - DATE_PART('month', {begin})) )";
case DateType.Day:
return $" ( DATE_PART('day', {end} - {begin}) )";
case DateType.Hour:
return $" ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) )";
case DateType.Minute:
return $" ( ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} ) )";
case DateType.Second:
return $" ( ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} )";
case DateType.Millisecond:
break;
default:
break;
}
throw new Exception(parameter + " datediff no support");
} }
public override string TrueValue()
{
return "1";
}
public override string FalseValue()
{
return "0";
}
//public override string DateDiff(MethodCallExpressionModel model)
//{
// var parameter = (DateType)(Enum.Parse(typeof(DateType), model.Args[0].MemberValue.ObjToString()));
// var begin = model.Args[1].MemberName;
// var end = model.Args[2].MemberName;
// switch (parameter)
// {
// case DateType.Year:
// return $" ( DATE_PART('Year', {end} ) - DATE_PART('Year', {begin}) )";
// case DateType.Month:
// return $" ( ( DATE_PART('Year', {end} ) - DATE_PART('Year', {begin}) ) * 12 + (DATE_PART('month', {end}) - DATE_PART('month', {begin})) )";
// case DateType.Day:
// return $" ( DATE_PART('day', {end} - {begin}) )";
// case DateType.Hour:
// return $" ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) )";
// case DateType.Minute:
// return $" ( ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} ) )";
// case DateType.Second:
// return $" ( ( ( DATE_PART('day', {end} - {begin}) ) * 24 + DATE_PART('hour', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} ) ) * 60 + DATE_PART('minute', {end} - {begin} )";
// case DateType.Millisecond:
// break;
// default:
// break;
// }
// throw new Exception(parameter + " datediff no support");
//}
public override string IIF(MethodCallExpressionModel model) public override string IIF(MethodCallExpressionModel model)
{ {
var parameter = model.Args[0]; var parameter = model.Args[0];
@@ -184,49 +205,10 @@ namespace SqlSugar
{ {
var parameter = model.Args[0]; var parameter = model.Args[0];
var parameter2 = model.Args[1]; var parameter2 = model.Args[1];
var format = "dd"; var format = parameter2.MemberValue.ObjToString();
if (parameter2.MemberValue.ObjToString() == DateType.Year.ToString()) return string.Format(" {1}({0}) ) ", format, parameter.MemberName);
{ }
format = "yyyy";
}
if (parameter2.MemberValue.ObjToString() == DateType.Month.ToString())
{
format = "MM";
}
if (parameter2.MemberValue.ObjToString() == DateType.Day.ToString())
{
format = "dd";
}
if (parameter2.MemberValue.ObjToString() == DateType.Hour.ToString())
{
format = "hh";
}
if (parameter2.MemberValue.ObjToString() == DateType.Minute.ToString())
{
format = "mi";
}
if (parameter2.MemberValue.ObjToString() == DateType.Second.ToString())
{
format = "ss";
}
if (parameter2.MemberValue.ObjToString() == DateType.Millisecond.ToString())
{
format = "ms";
}
if (parameter2.MemberValue.ObjToString() == DateType.Weekday.ToString())
{
return $" extract(DOW FROM cast({parameter.MemberName} as TIMESTAMP)) ";
}
return string.Format(" cast( to_char({1},'{0}')as integer ) ", format, parameter.MemberName);
}
public override string Contains(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
return string.Format(" ({0} like concat('%',{1},'%')) ", parameter.MemberName, parameter2.MemberName );
}
public override string StartsWith(MethodCallExpressionModel model) public override string StartsWith(MethodCallExpressionModel model)
{ {
@@ -289,11 +271,16 @@ namespace SqlSugar
} }
return string.Format(" ( to_char({0},'{2}')=to_char({1},'{2}') ) ", parameter.MemberName, parameter2.MemberName, format); return string.Format(" ( to_char({0},'{2}')=to_char({1},'{2}') ) ", parameter.MemberName, parameter2.MemberName, format);
} }
public override string ToDateShort(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
return string.Format("to_date (to_str({0}, 'yyyy-MM-dd'),'yyyy-MM-dd')", parameter.MemberName);
}
public override string ToDate(MethodCallExpressionModel model) public override string ToDate(MethodCallExpressionModel model)
{ {
var parameter = model.Args[0]; var parameter = model.Args[0];
return string.Format(" CAST({0} AS timestamp)", parameter.MemberName); return string.Format("CAST({0} AS DATE)", parameter.MemberName);
} }
public override string DateAddByType(MethodCallExpressionModel model) public override string DateAddByType(MethodCallExpressionModel model)
{ {
@@ -369,11 +356,11 @@ namespace SqlSugar
} }
public override string GetDate() public override string GetDate()
{ {
return "NOW()"; return "now()";
} }
public override string GetRandom() public override string GetRandom()
{ {
return "RANDOM()"; return "now()";
} }
public override string EqualTrue(string fieldName) public override string EqualTrue(string fieldName)

View File

@@ -53,6 +53,10 @@ namespace SqlSugar
} }
else if (Skip != null && Take != null) else if (Skip != null && Take != null)
{ {
if (Skip == 0 && Take == 1&&this.OrderByValue== "ORDER BY NOW() ")
{
this.OrderByValue = null;
}
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0]; if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt() : 0, Take); result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt() : 0, Take);
} }