Skip to content

Commit

Permalink
sets TimeOfDay also as some duration
Browse files Browse the repository at this point in the history
  • Loading branch information
shove70 committed Sep 5, 2019
1 parent 2220447 commit de1c9ab
Show file tree
Hide file tree
Showing 19 changed files with 1,826 additions and 1,824 deletions.
3 changes: 2 additions & 1 deletion README.md
Expand Up @@ -2,11 +2,12 @@
[![GitHub tag](https://img.shields.io/github/tag/shove70/database.svg?maxAge=86400)](https://github.com/shove70/database/releases)

# database
A lightweight native MySQL/MariaDB & PostgreSQL driver written in D
A lightweight native MySQL/MariaDB & PostgreSQL driver written in D.

The goal is a native driver that re-uses the same buffers and the stack as much as possible,
avoiding unnecessary allocations and work for the garbage collector

Native. No link, No harm :)

## example
```d
Expand Down
174 changes: 87 additions & 87 deletions mysql/database/mysql/appender.d
Expand Up @@ -118,87 +118,87 @@ void appendValue(Appender, T)(ref Appender appender, T value) if (is(Unqual!T ==
{
final switch(value.type) with (ColumnTypes)
{
case MYSQL_TYPE_NULL:
appender.put("null");
break;
case MYSQL_TYPE_TINY:
if (value.isSigned)
{
appendValue(appender, value.peek!byte);
}
else
{
appendValue(appender, value.peek!ubyte);
}
break;
case MYSQL_TYPE_YEAR:
case MYSQL_TYPE_SHORT:
if (value.isSigned)
{
appendValue(appender, value.peek!short);
}
else
{
appendValue(appender, value.peek!ushort);
}
break;
case MYSQL_TYPE_INT24:
case MYSQL_TYPE_LONG:
if (value.isSigned)
{
appendValue(appender, value.peek!int);
}
else
{
appendValue(appender, value.peek!uint);
}
break;
case MYSQL_TYPE_LONGLONG:
if (value.isSigned)
{
appendValue(appender, value.peek!long);
}
else
{
appendValue(appender, value.peek!ulong);
}
break;
case MYSQL_TYPE_DOUBLE:
appendValue(appender, value.peek!double);
break;
case MYSQL_TYPE_FLOAT:
appendValue(appender, value.peek!float);
break;
case MYSQL_TYPE_SET:
case MYSQL_TYPE_ENUM:
case MYSQL_TYPE_VARCHAR:
case MYSQL_TYPE_VAR_STRING:
case MYSQL_TYPE_STRING:
case MYSQL_TYPE_JSON:
case MYSQL_TYPE_NEWDECIMAL:
case MYSQL_TYPE_DECIMAL:
appendValue(appender, value.peek!(char[]));
break;
case MYSQL_TYPE_BIT:
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
case MYSQL_TYPE_LONG_BLOB:
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_GEOMETRY:
appendValue(appender, value.peek!(ubyte[]));
break;
case MYSQL_TYPE_TIME:
case MYSQL_TYPE_TIME2:
appendValue(appender, value.peek!Duration);
break;
case MYSQL_TYPE_DATE:
case MYSQL_TYPE_NEWDATE:
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_DATETIME2:
case MYSQL_TYPE_TIMESTAMP:
case MYSQL_TYPE_TIMESTAMP2:
appendValue(appender, value.peek!SysTime);
break;
case MYSQL_TYPE_NULL:
appender.put("null");
break;
case MYSQL_TYPE_TINY:
if (value.isSigned)
{
appendValue(appender, value.peek!byte);
}
else
{
appendValue(appender, value.peek!ubyte);
}
break;
case MYSQL_TYPE_YEAR:
case MYSQL_TYPE_SHORT:
if (value.isSigned)
{
appendValue(appender, value.peek!short);
}
else
{
appendValue(appender, value.peek!ushort);
}
break;
case MYSQL_TYPE_INT24:
case MYSQL_TYPE_LONG:
if (value.isSigned)
{
appendValue(appender, value.peek!int);
}
else
{
appendValue(appender, value.peek!uint);
}
break;
case MYSQL_TYPE_LONGLONG:
if (value.isSigned)
{
appendValue(appender, value.peek!long);
}
else
{
appendValue(appender, value.peek!ulong);
}
break;
case MYSQL_TYPE_DOUBLE:
appendValue(appender, value.peek!double);
break;
case MYSQL_TYPE_FLOAT:
appendValue(appender, value.peek!float);
break;
case MYSQL_TYPE_SET:
case MYSQL_TYPE_ENUM:
case MYSQL_TYPE_VARCHAR:
case MYSQL_TYPE_VAR_STRING:
case MYSQL_TYPE_STRING:
case MYSQL_TYPE_JSON:
case MYSQL_TYPE_NEWDECIMAL:
case MYSQL_TYPE_DECIMAL:
appendValue(appender, value.peek!(char[]));
break;
case MYSQL_TYPE_BIT:
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
case MYSQL_TYPE_LONG_BLOB:
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_GEOMETRY:
appendValue(appender, value.peek!(ubyte[]));
break;
case MYSQL_TYPE_TIME:
case MYSQL_TYPE_TIME2:
appendValue(appender, value.peek!Duration);
break;
case MYSQL_TYPE_DATE:
case MYSQL_TYPE_NEWDATE:
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_DATETIME2:
case MYSQL_TYPE_TIMESTAMP:
case MYSQL_TYPE_TIMESTAMP2:
appendValue(appender, value.peek!SysTime);
break;
}
}

Expand All @@ -211,12 +211,12 @@ void appendValue(Appender, T)(ref Appender appender, T value) if (isArray!T && (
{
switch(*ptr)
{
case '\\':
case '\'':
appender.put('\\');
goto default;
default:
appender.put(*ptr++);
case '\\':
case '\'':
appender.put('\\');
goto default;
default:
appender.put(*ptr++);
}
}
appender.put('\'');
Expand Down

0 comments on commit de1c9ab

Please sign in to comment.