good morning!!!!
Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
U
upper
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Harbor Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
open
upper
Commits
a2199824
Commit
a2199824
authored
Sep 21, 2014
by
José Carlos Nieto
Browse files
Options
Downloads
Patches
Plain Diff
Waiting for
https://github.com/cznic/ql/issues/73
.
parent
21882e76
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
ql/database.go
+18
-17
18 additions, 17 deletions
ql/database.go
ql/database_test.go
+48
-13
48 additions, 13 deletions
ql/database_test.go
with
66 additions
and
30 deletions
ql/database.go
+
18
−
17
View file @
a2199824
...
...
@@ -24,6 +24,7 @@ package ql
import
(
"database/sql"
"fmt"
"log"
"os"
"reflect"
"strings"
...
...
@@ -279,26 +280,26 @@ func (self *source) Clone() (db.Database, error) {
func
(
self
*
source
)
Transaction
()
(
db
.
Tx
,
error
)
{
// We still have some issues with QL, transactions and blocking.
return
nil
,
db
.
ErrUnsupported
/*
var
err
error
var
clone
*
source
var
sqlTx
*
sql
.
Tx
log
.
Println
(
"self.clone()"
)
if
clone
,
err
=
self
.
clone
();
err
!=
nil
{
return
nil
,
err
}
log
.
Println
(
"clone.session.Begin()"
)
if
sqlTx
,
err
=
clone
.
session
.
Begin
();
err
!=
nil
{
return
nil
,
err
}
tx := &
T
x{clone}
tx
:=
&
t
x
{
clone
}
clone
.
tx
=
sqlTx
log
.
Println
(
"return"
)
return
tx
,
nil
*/
}
// Stores database settings.
...
...
@@ -321,9 +322,9 @@ func (self *source) Open() error {
return
db
.
ErrMissingDatabaseName
}
self
.
session
,
err
=
sql
.
Open
(
`ql`
,
self
.
config
.
Database
)
fmt
.
Printf
(
"Attempt to open: %v
\n
"
,
self
.
config
)
if
err
!=
nil
{
if
self
.
session
,
err
=
sql
.
Open
(
`ql`
,
self
.
config
.
Database
);
err
!=
nil
{
return
err
}
...
...
This diff is collapsed.
Click to expand it.
ql/database_test.go
+
48
−
13
View file @
a2199824
...
...
@@ -30,6 +30,7 @@ package ql
import
(
//"database/sql"
"fmt"
"os"
"menteslibres.net/gosexy/to"
...
...
@@ -1100,15 +1101,17 @@ func TestDataTypes(t *testing.T) {
// We are going to benchmark the engine, so this is no longed needed.
func
TestDisableDebug
(
t
*
testing
.
T
)
{
os
.
Setenv
(
db
.
EnvEnableDebug
,
""
)
//
os.Setenv(db.EnvEnableDebug, "")
}
/*
// TODO: Unsupported by QL
// Benchmarking raw database/sql.
func BenchmarkAppendRawSQL(b *testing.B) {
var err error
var sess db.Database
var tx *sql.Tx
if sess, err = db.Open(Adapter, settings); err != nil {
b.Fatal(err)
...
...
@@ -1118,33 +1121,51 @@ func BenchmarkAppendRawSQL(b *testing.B) {
driver := sess.Driver().(*sql.DB)
if _, err = driver.Exec("TRUNCATE TABLE artist"); err != nil {
if tx, err = driver.Begin(); err != nil {
b.Fatal(err)
}
if _, err = tx.Exec(`TRUNCATE TABLE artist`); err != nil {
b.Fatal(err)
}
if err = tx.Commit(); err != nil {
b.Fatal(err)
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
if _, err = driver.Exec("INSERT INTO artist (name) VALUES('Hayao Miyazaki')"); err != nil {
if tx, err = driver.Begin(); err != nil {
b.Fatal(err)
}
if _, err = tx.Exec(`INSERT INTO artist (name) VALUES("Hayao Miyazaki")`); err != nil {
b.Fatal(err)
}
if err = tx.Commit(); err != nil {
b.Fatal(err)
}
}
}
*/
// Benchmarking Append().
//
// Contributed by wei2912
// See: https://github.com/gosexy/db/issues/20#issuecomment-20097801
func BenchmarkAppendUpper(b *testing.B) {
sess
,
err
:=
db
.
Open
(
Adapter
,
settings
)
var sess db.Database
var artist db.Collection
var err error
if
err
!=
nil
{
if
sess, err = db.Open(Adapter, settings);
err != nil {
b.Fatal(err)
}
defer sess.Close()
artist
,
err
:=
sess
.
Collection
(
"artist"
)
if artist, err = sess.Collection("artist"); err != nil {
b.Fatal(err)
}
artist.Truncate()
item := struct {
...
...
@@ -1159,9 +1180,6 @@ func BenchmarkAppendUpper(b *testing.B) {
}
}
/*
// TODO: QL still has some issues here.
// Benchmarking raw database/sql.
func BenchmarkAppendTxRawSQL(b *testing.B) {
var err error
...
...
@@ -1180,13 +1198,13 @@ func BenchmarkAppendTxRawSQL(b *testing.B) {
b.Fatal(err)
}
if _, err = tx.Exec(
"
TRUNCATE TABLE artist
"
); err != nil {
if _, err = tx.Exec(
`
TRUNCATE TABLE artist
`
); err != nil {
b.Fatal(err)
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
if _, err = tx.Exec(
"
INSERT INTO artist (name) VALUES(
'
Hayao Miyazaki
')"
); err != nil {
if _, err = tx.Exec(
`
INSERT INTO artist (name) VALUES(
"
Hayao Miyazaki
")`
); err != nil {
b.Fatal(err)
}
}
...
...
@@ -1195,22 +1213,38 @@ func BenchmarkAppendTxRawSQL(b *testing.B) {
b.Fatal(err)
}
}
*/
// Benchmarking Append() with transactions.
func
BenchmarkAppendTxUpper
(
b
*
testing
.
B
)
{
var
sess
db
.
Database
var
err
error
fmt
.
Printf
(
"BenchmarkAppendTxUpper
\n
"
)
os
.
Setenv
(
db
.
EnvEnableDebug
,
"TRUE"
)
settings
:=
db
.
Settings
{
Database
:
"new-db"
,
}
fmt
.
Printf
(
"Request to open"
)
if
sess
,
err
=
db
.
Open
(
Adapter
,
settings
);
err
!=
nil
{
b
.
Fatal
(
err
)
}
defer sess.Close()
//
defer sess.Close()
var
tx
db
.
Tx
fmt
.
Println
(
"hang3"
)
if
tx
,
err
=
sess
.
Transaction
();
err
!=
nil
{
b
.
Fatal
(
err
)
fmt
.
Println
(
"hang2"
)
return
}
fmt
.
Println
(
"hang1"
)
return
var
artist
db
.
Collection
if
artist
,
err
=
tx
.
Collection
(
"artist"
);
err
!=
nil
{
...
...
@@ -1237,6 +1271,7 @@ func BenchmarkAppendTxUpper(b *testing.B) {
}
}
/*
// Benchmarking Append() with map.
func BenchmarkAppendTxUpperMap(b *testing.B) {
var sess db.Database
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment