summaryrefslogtreecommitdiff
path: root/audio/amarok-kde4/files/patch-amarok_src_collectiondb.cpp
blob: a5bd6957c5725f8ffc834acb02ec345eb93214b8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
$FreeBSD$

--- amarok/src/collectiondb.cpp.orig
+++ amarok/src/collectiondb.cpp
@@ -290,15 +290,18 @@
     QString yearAutoIncrement = "";
     if ( m_dbConnPool->getDbConnectionType() == DbConnection::postgresql )
     {
-        query( QString( "CREATE %1 SEQUENCE album_seq%2;" ).arg( conn ? "TEMPORARY" : "").arg( conn ? "_temp" : ""), conn );
-        query( QString( "CREATE %1 SEQUENCE artist_seq%2;" ).arg( conn ? "TEMPORARY" : "").arg( conn ? "_temp" : ""), conn );
-        query( QString( "CREATE %1 SEQUENCE genre_seq%2;" ).arg( conn ? "TEMPORARY" : "").arg( conn ? "_temp" : ""), conn );
-        query( QString( "CREATE %1 SEQUENCE year_seq%2;" ).arg( conn ? "TEMPORARY" : "").arg( conn ? "_temp" : ""), conn );
+	if(!conn) 
+	{
+	    query( QString( "CREATE SEQUENCE album_seq;" ), conn );
+	    query( QString( "CREATE SEQUENCE artist_seq;" ), conn );
+	    query( QString( "CREATE SEQUENCE genre_seq;" ), conn );
+	    query( QString( "CREATE SEQUENCE year_seq;" ), conn );
+	}
 
-        albumAutoIncrement = QString("DEFAULT nextval('album_seq%1')").arg( conn ? "_temp" : "");
-        artistAutoIncrement = QString("DEFAULT nextval('artist_seq%1')").arg( conn ? "_temp" : "");
-        genreAutoIncrement = QString("DEFAULT nextval('genre_seq%1')").arg( conn ? "_temp" : "");
-        yearAutoIncrement = QString("DEFAULT nextval('year_seq%1')").arg( conn ? "_temp" : "");
+        albumAutoIncrement = QString("DEFAULT nextval('album_seq')");
+        artistAutoIncrement = QString("DEFAULT nextval('artist_seq')");
+        genreAutoIncrement = QString("DEFAULT nextval('genre_seq')");
+        yearAutoIncrement = QString("DEFAULT nextval('year_seq')");
     }
     else if ( m_dbConnPool->getDbConnectionType() == DbConnection::mysql )
     {
@@ -412,10 +415,12 @@
 
     if ( m_dbConnPool->getDbConnectionType() == DbConnection::postgresql )
     {
-            query( QString( "DROP SEQUENCE album_seq%1;" ).arg( conn ? "_temp" : ""), conn );
-            query( QString( "DROP SEQUENCE artist_seq%1;" ).arg( conn ? "_temp" : ""), conn );
-            query( QString( "DROP SEQUENCE genre_seq%1;" ).arg( conn ? "_temp" : ""), conn );
-            query( QString( "DROP SEQUENCE year_seq%1;" ).arg( conn ? "_temp" : ""), conn );
+	if (conn == NULL) {
+		query( QString( "DROP SEQUENCE album_seq;" ), conn );
+		query( QString( "DROP SEQUENCE artist_seq;" ), conn );
+		query( QString( "DROP SEQUENCE genre_seq;" ), conn );
+		query( QString( "DROP SEQUENCE year_seq;" ), conn );
+	}
     }
 }
 
@@ -1461,10 +1466,26 @@
         path = path.left( path.length() - 1 );
 
     if (m_dbConnPool->getDbConnectionType() == DbConnection::postgresql) {
-        query( QString( "UPDATE directories%1 SET changedate=%2 WHERE dir='%3';")
-                        .arg( conn ? "_temp" : "" )
-                        .arg( datetime )
-                        .arg( escapeString( path ) ), conn );
+	// REPLACE INTO is not valid SQL for postgres, so we need to check whether we 
+	// should UPDATE() or INSERT()
+	QStringList values = query(QString("SELECT * FROM directories%1 WHERE dir='%2';")
+	    .arg( conn ? "_temp" : "")
+	    .arg( escapeString( path ) ), conn );
+
+	if(values.count() > 0 )
+	{
+	    query( QString( "UPDATE directories%1 SET changedate=%2 WHERE dir='%3';")
+		.arg( conn ? "_temp" : "" )
+		.arg( datetime )
+		.arg( escapeString( path ) ), conn );
+	}
+	else
+	{
+	    query( QString( "INSERT INTO directories%1 (dir,changedate) VALUES ('%2','%3');")
+		.arg( conn ? "_temp" : "")
+		.arg( escapeString( path ) )
+		.arg( datetime ), conn );
+	}
     }
     else
     {
@@ -2429,9 +2450,7 @@
     QString _table = table;
     if (table.find("_temp") > 0) _table = table.left(table.find("_temp"));
 
-    /* this does not work with postgres
-    curvalSql = QString("SELECT currval('%1_seq');").arg(_table); */
-    curvalSql = QString("SELECT last_value FROM %1_seq;").arg(_table);
+    curvalSql = QString("SELECT currval('%1_seq');").arg(_table);
     result = PQexec(m_db, curvalSql.utf8());
     if (result == NULL)
     {