db-connect icon indicating copy to clipboard operation
db-connect copied to clipboard

sql column types are not respected

Open puppy0cam opened this issue 5 years ago • 0 comments

Currently in db-connect, column type is defined as a function argument, but the type is never used in coercion to JSON, and it instead guesses at the data type for every field. This can lead to unexpected types in returned data where user input might be treated as something other than a string and break consuming code. For example, in a database where I might expect typeof to resolve like

{
  "status": { "string": 9362 },
  "stats": { "object": 9362 }, // null or object
  "startedAt": { "string": 9362 }, // string (date)
  "sellerName": { "string": 9362 },
  "sellerCastle": { "string": 9362 },
  "quality": { "object": 8430, "string": 932 }, // null or string
  "price": { "number": 9362 },
  "lotId": { "string": 9362 }, // string, even if it looks like a number
  "itemName": { "string": 9362 }, // string (date)
  "finishedAt": { "string": 8692, "object": 670 }, // null or string (date)
  "endAt": { "string": 9362 }, // string (date)
  "condition": { "object": 8418, "string": 944 }, // null or string
  "buyerName": { "string": 7461, "object": 1901 }, // null or string
  "buyerCastle": { "string": 8194, "object": 1168 } // null or string
}

I instead see

{
  "status": { "string": 9362 },
  "stats": { "object": 9362 },
  "startedAt": { "string": 9362 },
  "sellerName": { "string": 9361, "number": 1 }, // user input string, parsing "8888" into 8888
  "sellerCastle": { "string": 9362 },
  "quality": { "object": 8430, "string": 932 },
  "price": { "number": 9362 },
  "lotId": { "number": 9362 }, // forward thinking to id changes, this is meant to be a string
  "itemName": { "string": 9362 },
  "finishedAt": { "string": 8692, "object": 670 },
  "endAt": { "string": 9362 },
  "condition": { "object": 8418, "string": 944 },
  "buyerName": { "string": 7461, "object": 1901 },
  "buyerCastle": { "string": 8194, "object": 1168 }
}

https://github.com/cloudflare/cloudflared/blob/710f66b0bbf9da94585235f6fba9b1a18ac631fa/dbconnect/sql.go#L278-L294

puppy0cam avatar Apr 05 '20 13:04 puppy0cam